假设你正在训练的自定义tf.estimator.Estimator
与tf.estimator.train_and_evaluate
在类似的设置使用验证数据集
classifier = tf.estimator.Estimator(
model_fn=model_fn,
model_dir=model_dir,
params=params)
train_spec = tf.estimator.TrainSpec(
input_fn = training_data_input_fn,
)
eval_spec = tf.estimator.EvalSpec(
input_fn = validation_data_input_fn,
)
tf.estimator.train_and_evaluate(
classifier,
train_spec,
eval_spec
)
通常,当训练数据集的损失继续改善而不是验证数据集的损失继续改善时,人们会使用验证数据集来切断训练以防止过度拟合。
目前tf.estimator.EvalSpec
允许指定多少steps
(默认为 100)来评估模型。
一个人(如果可能的话不使用tf.contrib
函数)如何在评估损失没有改善的情况下指定终止训练n
(n * steps
),然后将“最佳”模型/检查点(由验证数据集确定)保存到唯一的文件名(例如best_validation.checkpoint
)
相关分类