我在处理一堆图像数据集
然而,这需要大量的时间来学习,所以我在tensorflow中使用了早期停止。
这是我的回调选项& fit选项
(我知道监控acc不是一个很好的选择,但我只是想看看早停的效果如何)
tf.keras.callbacks.EarlyStopping(
monitor='accuracy',
patience=3,
#mode='max',
verbose=2,
baseline=0.98)
model.fit(x, y, batch_size=16, epochs=10, verbose=2, validation_split=0.2, callbacks=callbacks)然而,这是结果。
101/101 - 42s - loss: 6.9557 - accuracy: 6.2461e-04 - val_loss: 6.9565 - val_accuracy: 0.0000e+00
Epoch 2/10
101/101 - 39s - loss: 6.9549 - accuracy: 0.0019 - val_loss: 6.9558 - val_accuracy: 0.0000e+00
Epoch 3/10
101/101 - 37s - loss: 6.9537 - accuracy: 0.0037 - val_loss: 6.9569 - val_accuracy: 0.0000e+00
Epoch 00003: early stopping由于监测值‘准确性’不断增加,预计它不会停止。
另外,我想早点停下来像这样监视acc
acc=0, acc=0.1....acc=0.5, acc=0.4, acc=0.5, acc=0.6 #dont stop if increases again in patience epoch
acc=0, acc=0.1....acc=0.5, acc=0.3, acc=0.4, acc=0.35 #stop if acc does not increases again in patience epoch 我该怎么做?
发布于 2020-10-31 17:06:42
问题在于Baseline的使用
根据文件,它被定义为:
Baseline value for the monitored quantity. Training will stop if the model doesn't show improvement over the baseline.通过将基线设置为98%,您是在说明模型的准确度从98%开始,并且在停止训练的三个时期内,它没有比基线提高。
相反,按照您的用例执行以下操作:
tf.keras.callbacks.EarlyStopping(
monitor='accuracy',
min_delta=0.001,
patience=3,
mode='auto',
verbose=2,
baseline=None
)https://stackoverflow.com/questions/64618205
复制相似问题