当模型的损失函数的梯度不再下降时,使用早停法可以避免模型过度训练,从而保持最后一次下降时的最优参数
# 导入模块
import numpy as np
from keras import callbacks
from keras.models import Sequential
from keras.layers import Dense
# 早停法
callback = callbacks.EarlyStopping(monitor='loss', patience=3)
# 建立简单模型
model = Sequential()
model.add(Dense(10))
model.compile(optimizer='SGD', loss='mse')
# 注意模型训练时的epochs=10
history = model.fit(np.arange(100).reshape(5, 20), np.zeros(5),
epochs=10, batch_size=1, callbacks=[callback],
verbose=2)
# 使用早停法后,实际在训练时的第四代就停止了
epoch_len=len(history.history['loss'])
print(epoch_len) # 4
参考:
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping