2016-02-26 34 views
10

Sto cercando di leggere i dati da file CSV a tensorflow,Come leggere i dati in Tensorflow?

https://www.tensorflow.org/versions/r0.7/how_tos/reading_data/index.html#filenames-shuffling-and-epoch-limits

Il codice di esempio in documento ufficiale è come questo:

col1, col2, col3, col4, col5 = tf.decode_csv(value, record_defaults=record_defaults) 

Per leggere il file, ho bisogno di sapere quante colonne e linee nel file in anticipo, e se ci sono 1000 colonne, ho bisogno di definire 1000 variabili come col1, col2, col3, col4, col5,..., col1000 , questo non sembra un modo efficace per leggere i dati.

Le mie domande

  1. Qual è il modo migliore per leggere i file CSV in tensorflow?

  2. C'è un modo per leggere il database (come mongoDB) in Tensorflow?

risposta

5
  1. Lei sicuramente non è necessario definire col1, col2, a col1000 ...

    in generale, si potrebbe fare cose come questa:

    
    columns = tf.decode_csv(value, record_defaults=record_defaults) 
    features = tf.pack(columns) 
    do_whatever_you_want_to_play_with_features(features) 
    
  2. Non conosco alcun modo disponibile per leggere direttamente i dati da MongoDB. Forse puoi semplicemente scrivere un breve script per convertire i dati da MongoDB in un formato supportato da Tensorflow, ti consiglierei il formato binario TFRecord, che è molto più veloce da leggere rispetto al record csv. This è un buon post di blog su questo argomento. Oppure puoi scegliere di implementare un lettore di dati personalizzato da solo, vedi the official doc qui.

2
def func() 
    return 1,2,3,4 

b = func() 

print b #(1, 2, 3, 4) 

print [num for num in b] # [1, 2, 3, 4] 

Hi il suo nulla a che fare con la sua semplice tensorflow pitone non è necessario definire 1.000 variabile. tf.decode_csv restituisce una tupla.

Nessuna idea sulla gestione del database, penso che tu possa usare python e inserire i dati sotto forma di array sul tensorflow.

Spero che questo è utile

1

naturalmente è possibile implementare per leggere direttamente lotto di ordinamento casuale dei dati formati da Mongo per alimentare a tensorflow. qui di seguito è il mio modo:

 for step in range(self.steps): 


      pageNum=1; 
      while(True): 
       trainArray,trainLabelsArray = loadBatchTrainDataFromMongo(****) 
       if len(trainArray)==0: 
        logging.info("train datas consume up!") 
        break; 
       logging.info("started to train") 
       sess.run([model.train_op], 
         feed_dict={self.input: trainArray, 
            self.output: np.asarray(trainLabelsArray), 
            self.keep_prob: params['dropout_rate']}) 

       pageNum=pageNum+1; 

e hai bisogno anche di pre-elaborare i dati in formati MongoDB, tali come: assegnare ogni dati formati in MongoDB un valore sorta casuale ...

Problemi correlati