from keras.callbacks import EarlyStopping
early_stopping = EarlyStopping(monitor='val_loss',patience=100)
optimizer = keras.optimizers.Adam()
model.compile(loss='categorical_crossentropy',
optimizer=optimizer,
metrics=['accuracy'])
hist = model.fit(x_train, Y_train, batch_size=batch_size, nb_epoch=nb_epochs,
verbose=1, validation_data=(x_test, Y_test),callbacks=[early_stopping])
参数:
- monitor:需要监视的量(需要监视的loss,val_loss,acc,val_acc)
- patience:当early stop被激活(如发现loss相比上一个epoch训练没有下降),则经过
patience
个epoch后停止训练。一般情况设置此值较大些,因为神经网络学习本来就不稳定,只有加大些才能获得“最优”解。 - verbose:信息展示模式
- mode:‘auto’,‘min’,‘max’之一,在
min
模式下,如果检测值停止下降则中止训练。在max
模式下,当检测值不再上升则停止训练。默认为mode。
最后,当监测值不在改善时,该回调函数将终止训练
如果模型训练意外中断怎么办?
1.首先在model.complie之后加入代码实现每一次epoch保存最好的参数