我正在处理一堆图像数据集,
但是需要花费很多时间来学习,所以我在tensorflow中使用了Earlystopping
这是我的回调选项和fit选项
(我知道监视acc不是一个好选择,但只是想看看Earlystopping是如何工作的)
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=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
我该怎么办?
问题在于使用 Baseline
根据文档,其定义为:
Baseline value for the monitored quantity. Training will stop if the model doesn't show improvement over the baseline.
通过将“基线”设置为98%,您可以说该模型的准确性始于98%,并且在超过3个时间段后停止训练后,其准确性并未超过基线。
而是根据您的用例执行以下操作:
tf.keras.callbacks.EarlyStopping(
monitor='accuracy',
min_delta=0.001,
patience=3,
mode='auto',
verbose=2,
baseline=None
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句