如何配置Keras以停止训练,直到收敛或损失为0?我真想把它装得太大。我不想设定年代。我只是希望它在汇合时停止。
最佳答案
使用EarlyStopping回调。您可以自由选择要观察的损失/指标以及何时停止。
通常,您会看到“验证损失”(val_loss
),因为这是最重要的var,它告诉您的模型仍在学习泛化。
但既然你说你想过度健身,那么你可能会看到“训练损失”(loss
)。
回调使用“delta”,而不是绝对值,这很好,因为损失不一定以“0”为目标。但是可以使用baseline
参数设置绝对值。
因此,通常是一个回调来查看验证丢失:
from keras.callbacks import EarlyStopping
usualCallback = EarlyStopping()
这与
EarlyStopping(monitor='val_loss', min_delta=0, patience=0)
过大的:
overfitCallback = EarlyStopping(monitor='loss', min_delta=0, patience = 20)
注意
paticence
参数,这很重要,因为损失值并不总是在每个历元都会减少。让模型在结束之前再尝试几个时代。最后,只需将回调传递给
fit
和大量的epoch:model.fit(X, Y, epochs=100000000, callbacks=[overfitCallback])