Ale*_*ara 6 python machine-learning neural-network keras tensorflow
有什么方法可以返回使用EarlyStopping回调时在Keras中停止训练的时期数?
我可以获取训练和验证损失的日志,并使用耐心参数自己计算时间段数,但是还有更直接的方法吗?
patience从历元总数中减去该值(如本评论中所建议的)在某些情况下可能不起作用。例如,如果您设置epochs=100和patience=20,如果在第 90 轮找到最佳准确率/损失值,则训练将在第 100 轮停止。因此,使用这种方法,您会得到错误的数字 (100-20 = 80)。
此外,正如本评论中所述,使用EarlyStopping.stopped_epoch仅提供训练停止时的纪元,而不是保存最佳权重时的纪元。save_best_weights=True当您设置或依赖ModelCheckpoint在停止训练之前保存最佳模型时,这特别有用。
因此我的解决方案是获取模型历史数组的索引,具有最佳值。假设使用的指标是验证准确性,依赖于numpy,这里是一些代码:
import numpy as np
model.fit(...)
hist = model.history.history['val_acc']
n_epochs_best = np.argmax(hist)
Run Code Online (Sandbox Code Playgroud)
使用EarlyStopping.stopped_epoch属性:在单独的变量()中记住回调callback,并callback.stopped_epoch在训练停止后检查。