目前我使用以下代码:
callbacks = [
EarlyStopping(monitor='val_loss', patience=2, verbose=0),
ModelCheckpoint(kfold_weights_path, monitor='val_loss', save_best_only=True, verbose=0),
]
model.fit(X_train.astype('float32'), Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
shuffle=True, verbose=1, validation_data=(X_valid, Y_valid),
callbacks=callbacks)
Run Code Online (Sandbox Code Playgroud)
它告诉Keras在2个时期的损失没有改善时停止训练.但是我希望在损失变得小于某些常数"THR"之后停止训练:
if val_loss < THR:
break
Run Code Online (Sandbox Code Playgroud)
我在文档中看到有可能进行自己的回调:http: //keras.io/callbacks/ 但是没有找到如何停止训练过程.我需要一个建议.
python machine-learning neural-network conv-neural-network keras
我是深度学习和Keras的新手,我尝试对我的模型训练过程进行的一项改进是利用Keras的keras.callbacks.EarlyStopping回调函数.
基于训练我的模型的输出,使用以下参数似乎是合理的EarlyStopping吗?
EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=5, verbose=0, mode='auto')
Run Code Online (Sandbox Code Playgroud)
另外,为什么它似乎比它应该等待连续5个历元的时间更早停止,其中差异val_loss小于min_delta0.0001?
训练LSTM模型时输出(不含EarlyStop)
运行所有100个时代
Epoch 1/100
10200/10200 [==============================] - 133s 12ms/step - loss: 1.1236 - val_loss: 0.6431
Epoch 2/100
10200/10200 [==============================] - 141s 13ms/step - loss: 0.2783 - val_loss: 0.0301
Epoch 3/100
10200/10200 [==============================] - 143s 13ms/step - loss: 0.1131 - val_loss: 0.1716
Epoch 4/100
10200/10200 [==============================] - 145s 13ms/step - loss: 0.0586 - val_loss: 0.3671
Epoch 5/100
10200/10200 [==============================] - 146s 13ms/step - loss: 0.0785 …Run Code Online (Sandbox Code Playgroud)