在TensorFlow 1.10中为估算器引入了提前停止功能。我一直在努力使提早停止工作,但是,似乎它什么也没做。这是我的代码的样子:
classifier = tf.estimator.Estimator(
model_fn=model_fn,
model_dir=f"./artifacts/{file_time}/checkpoints/")
os.makedirs(classifier.eval_dir())
early_stopping = tf.contrib.estimator.stop_if_no_decrease_hook(
classifier,
metric_name='loss',
max_steps_without_decrease=100)
classifier.train(
input_fn=lambda:train_input_fn(file_time),
steps=40000,
hooks=[early_stopping]
)
培训开始,但是培训永远不会被钩子停止,而是继续进行培训,直到classifier.train
中定义的步骤为止。当它登录到控制台时,我可以看到损失没有进一步减少。我尝试将max_steps_without_decrease
减少到100,以便尽快停止。对我可能在这里做错的任何想法?