我将如何配置Keras使其停止训练,直到收敛或损失为0为止?我本来想过拟合。我不想设置时期数。我只是希望它收敛时才停止。
答案 0 :(得分:4)
使用EarlyStopping回调。您可以自由选择要观察的损失/指标以及何时停止。
通常,您会看到“验证损失”(val_loss
),因为这是最重要的变量,它表明您的模型仍在学习概括。
但是由于您说过头了,所以您可以查看“训练损失”(loss
)。
回调函数使用“ deltas”,而不使用绝对值,这是很好的,因为损失不一定以“零”为目标。但是您可以使用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
:
model.fit(X, Y, epochs=100000000, callbacks=[overfitCallback])
答案 1 :(得分:1)
EarlyStopping可以完全满足您的要求:当监视的数量(损失)停止改善时,它可以帮助您停止训练。这可以通过使用 patience 参数(给出次数)来完成,此后如果没有发现改善的情况(可能收敛),则应停止训练。 还可以在possible duplicate中找到EarlyStopping使用情况信息。
答案 2 :(得分:1)
如果要手动停止keras,请使用鼠标位置作为输入:
ON CONFLICT DO NOTHING