TensorFlow 1.4 将 TF 数据集移至核心 ( tf.data.Dataset
) 和文档/教程建议用于tf.estimator
训练模型。
但是,按照本页末尾的建议,必须在函数内部实例化 Dataset 对象及其迭代器input_fn
。这意味着通过数据集的迭代将在每次调用时重新开始estimator.train(input_fn, steps)
。因此,调用步骤 < epoch 中的样本数,将导致在数据集的子集上训练模型。
因此我的问题。是否可以使用 Estimator + Dataset 实现类似的功能:
for i in range(num_epochs):
# Train for some steps
estimator.train(input_fn=train_input_fn, steps=valid_freq)
validation_iterator.
# Evaluate on the validation set (steps=None, we evaluate on the full validation set)
estimator.evaluate(input_fn=valid_input_fn)
无需在每次调用时从头开始训练样本迭代estimator.train(input_fn=train_input_fn, steps=valid_freq)
?
例如,与此处不同,在外部实例化 Dataset 及其迭代器input_fn
?我试过了,但它不起作用,因为输入(来自数据集迭代器)和模型(来自估计器model_fn
)不是同一个图表的一部分。
谢谢