相关疑难解决方法(0)

如何告诉Keras根据损失值停止训练?

目前我使用以下代码:

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

70
推荐指数
4
解决办法
4万
查看次数

Keras EarlyStopping:使用哪种min_delta和耐心?

我是深度学习和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)

python python-3.x lstm keras tensorflow

8
推荐指数
2
解决办法
4449
查看次数