Keras一站式停止学习

时间:2019-03-27 11:13:13

标签: python keras deep-learning

每个类别大约有300张真实图像。具有3个类别的分类模型。 我使用2000个生成的样本和10个纪元制作了一个模型。该模型还可以,但是有许多错误的负面预测。 比我想改进模型并将生成的样本数(真实图像数不变)增加到20000。在第6个时期,精度开始下降,最终达到0.2

339/666 [==============>...............] - ETA: 52s - loss: 0.2762 - acc: 0.9012
340/666 [==============>...............] - ETA: 52s - loss: 0.2757 - acc: 0.9014
341/666 [==============>...............] - ETA: 52s - loss: 0.2754 - acc: 0.9015
342/666 [==============>...............] - ETA: 52s - loss: nan - acc: 0.9014   
343/666 [==============>...............] - ETA: 52s - loss: nan - acc: 0.8995
344/666 [==============>...............] - ETA: 52s - loss: nan - acc: 0.8976
345/666 [==============>...............] - ETA: 51s - loss: nan - acc: 0.8955

是否过拟合? 我可以以某种方式实时阻止它,而无需重新开始学习吗?例如。是否有可能在每个时期后保存模型,并在这种情况下采用最佳模型。 还是至少Keras可以打破教学?

2 个答案:

答案 0 :(得分:2)

您的模型肯定不会在这里过拟合。 经过特定的迭代次数后,您的模型停止学习(精度曲线趋于平坦)。

要克服这个问题,您可以按照以下步骤进行

  • 添加更多数据
  • 调整超级参数

keras库通过回调API提供检查点功能。通过ModelCheckpoint回调类,您可以定义在哪里检查模型权重,如何命名文件以及在什么情况下对模型进行检查。

使用此方法,您可以从迭代次数中选择最佳模型。

from keras.callbacks import ModelCheckpoint

"""
    Your Code
"""
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')

引用How to Check-Point Deep Learning Models in Keras

答案 1 :(得分:1)

我遇到过类似的问题,您的损失突然变成nan有点怀疑。

由于您的目标函数未更新(即不是数字),它可能会停止学习。

我建议:

  • 查看模型损失函数
  • 审查特征化过程
  • 确保输入不会导致nan发生

最后一点可能是最相关的,因为非常大的数字可能会导致损失计算或nan潜入您的特征向量中。

使用callback查看诸如ModelCheckpoint之类的过程可以帮助调试。