Как читать данные в Tensorflow?

Я пытаюсь прочитать данные из CSV файлов в tensorflow,

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

Пример кода в официальном документе выглядит следующим образом:

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

Чтобы прочитать файл, мне нужно знать, сколько столбцов и строк в файле заблаговременно, и если есть 1000 столбцов, мне нужно определить 1000 переменных, таких как col1, col2, col3, col4, col5,..., col1000 ,, это не похоже на эффективный способ чтения данных.

Мои вопросы

  • Каков наилучший способ чтения CSV файлов в Tensorflow?

  • Есть ли способ читать базу данных (например, mongoDB) в Tensorflow?

Ответ 1

  • Вам определенно не нужно определять col1, col2, col1000...

    вообще, вы можете делать такие вещи:

    
    columns = tf.decode_csv(value, record_defaults=record_defaults)
    features = tf.pack(columns)
    do_whatever_you_want_to_play_with_features(features)
    
  • Я не знаю никаких готовых способов прямого чтения данных из MongoDB. Возможно, вы можете просто написать короткий script для преобразования данных из MongoDB в формате, поддерживаемом Tensorflow, я бы порекомендовал двоичную форму TFRecord, которая намного быстрее, чем запись csv. Это хорошее сообщение в блоге по этой теме. Или вы можете самостоятельно реализовать индивидуальный считыватель данных, см. официальный документ здесь.

Ответ 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]

Привет, он не имеет ничего общего с shadoworflow, его простой python не должен определять 1000 переменных. tf.decode_csv возвращает кортеж.

Не знаю, как работать с базой данных, я думаю, что вы можете использовать python и просто вводить данные в виде массива в тензорный поток.

Надеюсь, что это будет полезно

Ответ 3

конечно, вы можете реализовать прямое чтение данных случайной сортировки случайных данных из mongo для подачи на тензор. ниже мой путь:

        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;

а также вам нужны предварительно обработанные данные в mongodb, такие как: назначить каждому обученному материалу в mongodb случайное значение сортировки...

Ответ 4

Есть ли способ прочитать базу данных (например, mongoDB) в Tensorflow?

Попробуйте TFMongoDB, реализованный C++ набор данных для TensorFlow, который позволяет вам подключаться к MongoDB:

pip install tfmongodb

На странице GitHub есть пример того, как читать данные. Смотрите также pypi: TFMongoDB