#tensorflow #validation #early-stopping
Вопрос:
У меня есть следующая ранняя остановка, но она прекращается слишком рано. Мне интересно, учитывает ли он улучшение потерь при val_ndcg_metric
уменьшении (чего не должно быть, так как чем больше ndcg, тем лучше).
early_stopping = EarlyStopping(monitor='val_ndcg_metric',
patience = 5,
restore_best_weights = True,
min_delta = 0.001,
mode='auto',
verbose=2,
baseline=None)
model.fit(cached_train,
epochs=epochs,
verbose=True,
validation_data=cached_validation,
callbacks=[early_stopping])
Вот результаты:
Epoch 1/100
287/287 [==============================] - 68s 220ms/step - ndcg_metric: 0.7687 - root_mean_squared_error: 0.7584 - loss: 19.7870 - regularization_loss: 0.0000e 00 - total_loss: 19.7870 - val_ndcg_metric: 0.8302 - val_root_mean_squared_error: 1.1678 - val_loss: 19.6306 - val_regularization_loss: 0.0000e 00 - val_total_loss: 19.6306
Epoch 2/100
287/287 [==============================] - 62s 215ms/step - ndcg_metric: 0.8403 - root_mean_squared_error: 1.6596 - loss: 19.6016 - regularization_loss: 0.0000e 00 - total_loss: 19.6016 - val_ndcg_metric: 0.8659 - val_root_mean_squared_error: 2.0399 - val_loss: 19.4413 - val_regularization_loss: 0.0000e 00 - val_total_loss: 19.4413
Epoch 3/100
287/287 [==============================] - 62s 216ms/step - ndcg_metric: 0.8679 - root_mean_squared_error: 2.1857 - loss: 19.4620 - regularization_loss: 0.0000e 00 - total_loss: 19.4620 - val_ndcg_metric: 0.8874 - val_root_mean_squared_error: 2.2495 - val_loss: 19.2740 - val_regularization_loss: 0.0000e 00 - val_total_loss: 19.2740
Epoch 4/100
287/287 [==============================] - 62s 215ms/step - ndcg_metric: 0.8861 - root_mean_squared_error: 2.2456 - loss: 19.3463 - regularization_loss: 0.0000e 00 - total_loss: 19.3463 - val_ndcg_metric: 0.8982 - val_root_mean_squared_error: 2.2170 - val_loss: 19.1935 - val_regularization_loss: 0.0000e 00 - val_total_loss: 19.1935
Epoch 5/100
287/287 [==============================] - 62s 215ms/step - ndcg_metric: 0.8945 - root_mean_squared_error: 2.2081 - loss: 19.2647 - regularization_loss: 0.0000e 00 - total_loss: 19.2647 - val_ndcg_metric: 0.9027 - val_root_mean_squared_error: 2.1765 - val_loss: 19.1420 - val_regularization_loss: 0.0000e 00 - val_total_loss: 19.1420
Epoch 6/100
287/287 [==============================] - 62s 216ms/step - ndcg_metric: 0.8987 - root_mean_squared_error: 2.1843 - loss: 19.2139 - regularization_loss: 0.0000e 00 - total_loss: 19.2139 - val_ndcg_metric: 0.9060 - val_root_mean_squared_error: 2.1654 - val_loss: 19.0738 - val_regularization_loss: 0.0000e 00 - val_total_loss: 19.0738
Restoring model weights from the end of the best epoch.
Epoch 00006: early stopping
277/277 [==============================] - 24s 88ms/step - ndcg_metric: 0.8323 - root_mean_squared_error: 1.1680 - loss: 19.6501 - regularization_loss: 0.0000e 00 - total_loss: 19.6501
Я был бы признателен за любые мысли по этому поводу.
Ответ №1:
Я не знаю, что такое val_ndcg_metric, но, по-видимому, вы хотите, чтобы он увеличивался по мере того, как модель тренируется. В обратном вызове вы устанавливаете режим= «авто». Попробуйте установить режим=»макс». Это остановит обучение, если значение val_ndcg_metric перестанет увеличиваться в течение определенного количества эпох.
Комментарии:
1. Спасибо. По-видимому, TF неправильно определяет направление ndcg (Нормализованный дисконтированный совокупный выигрыш) для ранжирования проблем.