每个类别大约有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可以打破教学?
答案 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')
答案 1 :(得分:1)
我遇到过类似的问题,您的损失突然变成nan
有点怀疑。
由于您的目标函数未更新(即不是数字),它可能会停止学习。
我建议:
nan
发生最后一点可能是最相关的,因为非常大的数字可能会导致损失计算或nan
潜入您的特征向量中。
使用callback
查看诸如ModelCheckpoint
之类的过程可以帮助调试。