Это связано с EvalSpec, поэтому он отслеживает потерю проверки. Это сделает раннюю остановку, если тренируется достаточно долго. Возможно, вам придется снизить значение сглаживания до 0,99 и понизить допуск, если он не останавливается достаточно быстро.

ользуюtf.estimator в TensorFlow 1.4 иtf.estimator.train_and_evaluate отлично, но мне нужно рано остановиться. Какой предпочтительный способ добавить это?

Я предполагаю, что есть некоторыеtf.train.SessionRunHook где-то для этого. Я видел, что был старый пакет contrib сValidationMonitor казалось, что он рано остановился, но в 1.4 его больше нет. Или предпочтительным способом в будущем будет полагаться наtf.keras (с которой ранняя остановка действительно легко) вместоtf.estimator/tf.layers/tf.dataвозможно?

Ответы на вопрос(1)

Решение Вопроса

Хорошие новости!tf.estimator теперь имеет раннюю поддержку остановки на мастере, и похоже, что это будет в 1.10.

estimator = tf.estimator.Estimator(model_fn, model_dir)

os.makedirs(estimator.eval_dir())  # TODO This should not be expected IMO.

early_stopping = tf.contrib.estimator.stop_if_no_decrease_hook(
    estimator,
    metric_name='loss',
    max_steps_without_decrease=1000,
    min_steps=100)

tf.estimator.train_and_evaluate(
    estimator,
    train_spec=tf.estimator.TrainSpec(train_input_fn, hooks=[early_stopping]),
    eval_spec=tf.estimator.EvalSpec(eval_input_fn))
 LeckieNi04 дек. 2018 г., 08:52
У меня также была похожая проблема оsignal_early_stopping not found, Кажется, это потому чтоearly_stopping крюк может быть размещен только в крюках TrainSpec. Для использования в хуках EvalSpec эта ошибка может произойти.
 TasosGlrs24 авг. 2018 г., 13:35
Я пробовал это с версией 1.10, и я получаю следующую ошибку:NotFoundError: Key signal_early_stopping/STOP not found in checkpoint [[Node: save/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT_INT64, DT_FLOAT, DT_FLOAT, ..., DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_save/Const_0_0, save/RestoreV2/tensor_names, save/RestoreV2/shape_and_slices)]]
 oens10 сент. 2018 г., 03:03
@TasosGlrs Вы уверены, что не пытались добавить ловушку и продолжить с существующей контрольной точки, которая была создана в более раннем запуске без ловушки и, следовательно, пропустили необходимые ключи?
 TasosGlrs10 сент. 2018 г., 17:03
@oens Да, я создаю новую модель dir каждый раз, когда проверяю ее. Я не знаю, насколько это уместно, но я создаю свою оценку на основе модели Keras:estimator = tf.keras.estimator.model_to_estimator(keras_model=my_model, model_dir='{0}/{1}/model_{2}'.format(def_modelpath, modeldir, my_model.name))
 Eric H.29 июл. 2018 г., 20:53
Это выглядело так многообещающе, но кажется, что это не в r1.9 (который я считаю стабильным выпуском на сегодняшний день)>>> tf.contrib.estimator.stop_if_no_decrease_hook Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'tensorflow.contrib.estimator' has no attribute 'stop_if_no_decrease_hook'

Ваш ответ на вопрос