Может ли кто-нибудь помочь объяснить, как ранняя остановка работает с Tensorflow Estimator?
Я использую крюк ранней остановки (см. Ниже), но, похоже, он мало что делает - он не останавливается, он просто тренируется для заданного количества эпох, даже когда модель явно подходит.
Я хотел бы знать, как точно установить max_steps_without_decrease и min_steps . Я привык устанавливать параметр терпения, который инструктирует прекратить обучение, если потери (или другие метрики) в наборе оценки не улучшились для x количества эпох. Я не уверен, как сопоставить это с этими новыми параметрами - у меня нет интуиции о том, как их установить.
early_stop = tf.contrib.estimator.stop_if_no_decrease_hook(estimator, 'loss', 1000)
train_spec = tf.estimator.TrainSpec(input_fn=train_input_fn, max_steps=2000, hooks=[early_stop])
eval_spec = tf.estimator.EvalSpec(input_fn=eval_input_fn, steps=1, exporters=exporter)
exporter = tf.estimator.BestExporter(
name="best_exporter",
serving_input_receiver_fn=serving_fn,
exports_to_keep=5
)
tf.estimator.train_and_evaluate(
estimator,
train_spec=train_spec,
eval_spec=eval_spec)