【问题标题】:How to detect the epoch where Keras earlyStopping occurred?如何检测 Keras earlyStopping 发生的时代?
【发布时间】:2018-06-15 11:22:30
【问题描述】:

我正在使用 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 在什么时期结束以解决不匹配问题?

详细设置将结束纪元打印到屏幕上,但我无法确定如何访问要在图中使用的值。

【问题讨论】:

    标签: python tensorflow neural-network keras


    【解决方案1】:

    它被设置为(code)作为回调中的一个字段:

    early_stopping_monitor.stopped_epoch
    

    会给你训练后停止的纪元,如果没有提前停止,则为 0。

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2010-11-14
      • 2020-09-29
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多