¿Cómo leer datos en Tensorflow?

Estoy tratando de leer datos de archivos CSV a tensorflow,

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

El código de muestra en el documento oficial es así:

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

Para leer el archivo, necesito saber cuántas columnas y líneas hay en el archivo de antemano, y si hay 1000 columnas, debo definir 1000 variables como col1, col2, col3, col4, col5,..., col1000 , este No parece una forma eficiente de leer datos.

Mis preguntas

  1. ¿Cuál es la mejor manera de leer archivos CSV en Tensorflow?

  2. ¿Hay alguna forma de leer la base de datos (como mongoDB) en Tensorflow?

  1. Definitivamente no es necesario definir col1, col2, a col1000 …

    En general, podrías hacer cosas como esta:

     columns = tf.decode_csv(value, record_defaults=record_defaults) features = tf.pack(columns) do_whatever_you_want_to_play_with_features(features) 
  2. No conozco ninguna manera de leer directamente los datos de MongoDB. Tal vez solo pueda escribir un script corto para convertir datos de MongoDB en un formato compatible con Tensorflow, recomendaría el formato binario TFRecord , que es mucho más rápido de leer que el registro csv. Esta es una buena publicación de blog sobre este tema. O puede elegir implementar un lector de datos personalizado por sí mismo, consulte el documento oficial aquí.

 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] 

Hola, no tiene nada que ver con tensorflow, su simple Python no necesita definir 1000 variables. tf.decode_csv devuelve una tupla.

No tengo idea sobre el manejo de la base de datos, creo que puede usar python y simplemente ingresar los datos en forma de matriz al tensorflow.

Espero que esto sea de ayuda

por supuesto, puede implementar para leer directamente datos entrenados de orden aleatorio por lotes de mongo a feed to tensorflow. a continuación es mi camino:

  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; 

y también necesita preproceso de datos entrenados en mongodb, como por ejemplo: asignar a cada datos entrenados en mongodb un valor de orden aleatorio …

¿Hay alguna forma de leer la base de datos (como mongoDB) en Tensorflow?

Pruebe TFMongoDB , un conjunto de datos implementado en C ++ para TensorFlow que le permite conectarse a su MongoDB:

 pip install tfmongodb 

Hay un ejemplo en la página de GitHub sobre cómo leer datos. Véase también pypi: TFMongoDB