如何检测Keras earlyStopping发生的时代?

时间:2018-06-15 11:22:30

标签: python tensorflow neural-network keras

我正在训练Keras的神经网络。我将num_epochs设置为一个较大的数字,让EarlyStopping终止训练。

model = Sequential()
model.add(Dense(1, input_shape=(nFeatures,), activation='linear'))
model.compile(optimizer='rmsprop', loss='mse', metrics=['mse', 'mae'])

early_stopping_monitor = EarlyStopping(monitor='val_loss', patience=15, verbose=1, mode='auto')

checkpointer = ModelCheckpoint(filepath = fname_saveWeights, verbose=1, save_best_only=True)

seqModel = model.fit(X_train, y_train, batch_size=4, epochs=num_epochs, validation_data=(X_test, y_test), shuffle=True, callbacks=[early_stopping_monitor, checkpointer], verbose=2)

这很好用。但是,然后我尝试绘制损失函数:

val_loss   = seqModel.history['val_loss']
xc         = range(num_epochs)

plt.figure()
plt.plot(xc, val_loss)
plt.show()

我试图绘制num-epochs(xc)的范围但是earlyStopping结束得更早,所以我的形状有错误。 如何检测EarlyStopping在什么时期结束以解决不匹配问题?详细设置将结束时期打印到屏幕,但我无法确定如何访问要在绘图中使用的值。

1 个答案:

答案 0 :(得分:4)

将(code)设置为回调内的字段:

early_stopping_monitor.stopped_epoch

将为您提供训练后停止的时间段,如果没有提前停止,则为0。