Параметры крючка ранней остановки Tensorflow Estimator - PullRequest
0 голосов
/ 14 января 2019

Может ли кто-нибудь помочь объяснить, как ранняя остановка работает с 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)
...