При использовании tf.data
со стратегией распространения (которую можно использовать с Keras и tf.Estimator
s), ваш ввод fn должен возвращать tf.data.Dataset
:
def input_fn():
dataset = dataset.repeat(num_epochs)
dataset = dataset.batch(batch_size = batch_size)
dataset = dataset.cache()
dataset = dataset.prefetch(buffer_size=None)
return dataset
...use input_fn...
См. документацию по стратегии распространения.
dataset.make_one_shot_iterator()
полезен вне стратегий распространения / библиотек более высокого уровня, например, если вы используете библиотеки более низкого уровня или отлаживаете / тестируете набор данных.Например, вы можете перебрать все элементы набора данных следующим образом:
dataset = ...
iterator = dataset.make_one_shot_iterator()
get_next = iterator.get_next()
with tf.Session() as sess:
while True:
print(sess.run(get_next))
except tf.errors.OutOfRangeError:
break