Как использовать StreamingDataFeeder в качестве contrib_learn.Estimator.fit() input_fn?

Я недавно начал использовать tensorflow.contrib.learn (skflow) библиотека и очень нравится. Тем не менее, я столкнулся с проблемой использования Estimator, функция подгонки использует либо

  1. (X, Y, а также batch_size) - проблема с этим подходом состоит в том, что он не поддерживает предоставление для указания количества эпох и разрешения произвольного источника данных.
  2. input_fn - кроме того, установка эпох дает мне гораздо больше гибкости в отношении источника обучения (который в моем случае исходит непосредственно из базы данных).

Теперь я знаю, что могу создать input_fn, который читает файлы, однако, поскольку я не заинтересован в работе с файлами, следующие функции для меня бесполезны:

  • tf.contrib.learn.read_batch_examples
  • tf.contrib.learn.read_batch_features
  • tf.contrib.learn.read_batch_record_features

В идеале я хотел бы использовать StreamingDataFeeder в качестве input_fn. Есть идеи, как мне этого добиться?

1 ответ

StreamingDataFeeder используется, когда вы предоставляете итераторы как x / y в fit/predict/evaluate из Estimator,

Пример:

x = (np.array([i]) for i in xrange(10**10)) # use range for python >=3.0
y = (np.array([i + 1]) for i in xrange(10**10))
lr = tf.contrib.learn.LinearRegressor(
    feature_columns=[tf.contrib.layers.real_valued_column('')])

# only consumes 1000*10 values from iterators.
lr.fit(x, y, steps=1000, batch_size=10)

Если вы хотите использовать input_fn для подачи данных - вам нужно использовать графические операции для чтения / обработки данных. Например, вы можете создать операцию C++, которая будет генерировать ваши данные (это может быть порт прослушивания или чтение из базы данных Op) и преобразовывать в Tensor, В основном это хорошо для чтения данных из файлов, но могут быть реализованы и другие программы чтения.

Другие вопросы по тегам