Использование больших данных Tensorflow - PullRequest
0 голосов
/ 24 октября 2018

Предположим, у меня есть огромный список объектов, каждый из которых может быть, например, списком пустых массивов.

Как лучше всего передать этот набор данных в тензорный поток?

Я хочу иметь возможность произвольно перемешивать данные и формировать пакеты.Может быть, стоит перемешать набор данных и сформировать пакеты, используя стандартные процедуры Python (Numpy), а после этого использовать что-то вроде tf.data.Dataset.from_generator()?

Простой способ преобразования полного набора данных в tf.Tensor кажется бесполезным из-за ограничения размера для буфера протокола tf.GraphDef (согласно документации Tensorflow).

1 Ответ

0 голосов
/ 26 октября 2018

Похоже, ваши данные велики, но все еще достаточно малы, чтобы поместиться в памяти?Если это так, вы находитесь на правильном пути с tf.data.Dataset.from_generator () .Затем вы можете перемешать и пакетировать что-то вроде

import itertools

# your data
data = range(1024)
def gen():
  for item in data:
    yield data

ds = Dataset.from_generator(
    gen, tf.int64, tf.TensorShape([])).shuffle(buffer_size=128).batch(batch_size=4)
value = ds.make_one_shot_iterator().get_next()

sess.run(value)  # array([0, 1, 2, 3])

В качестве альтернативы, вы можете записать свои данные в файл TFRecord и прочитать из него, используя TFRecordDataset.Этот тест должен помочь вам начать работу.

...