网络完全融合后停止Keras Training

时间:2018-11-26 09:58:49

标签: python machine-learning keras neural-network training-data

我将如何配置Keras使其停止训练,直到收敛或损失为0为止?我本来想过拟合。我不想设置时期数。我只是希望它收敛时才停止。

3 个答案:

答案 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使用情况信息。

to vizualize the training process也是有帮助的。

答案 2 :(得分:1)

如果要手动停止keras,请使用鼠标位置作为输入:

ON CONFLICT DO NOTHING