我已经用11200张图像的数据集训练了我的神经网络,其验证准确性为96%。我保存了模型并将其权重加载到相同的神经网络中。我以阵列的形式选择了738个数据集的图像,并尝试通过模型预测每个图像的类别,并将它们与真实标签进行比较,然后再次计算出准确率,结果是74%。这里有什么问题?我猜它的准确性应该再次达到96%。
prelist=[]
for i in range(len(x)):
prediction = model.predict_classes(x[i])
prelist.append(prediction)
count = 0
for i in range(len(x)):
if(y[i] == prelist[i]):
count = count + 1
test_precision = (count/len(x))*100
print (test_precision)
当我在用于训练神经网络的11200张图像上使用预测类并将其结果与真实标签进行比较时,再次计算出其准确性,其准确性为91%。我在这个问题上使用AlexNet和二进制分类。谢谢。
P.S:我附加了我的模型图,我想这并不过分拟合,最后我附加了一个过度拟合的模型图。
一个过度拟合的损失图就是这样
答案 0 :(得分:0)
首先,您不应该在训练过程中使用的图像上评估准确性得分。
评估模型总是归结为将可用数据分为三组:训练,验证和测试。您在训练数据上进行训练,并在验证数据上评估模型,以测量损失并在训练过程中优化/微调网络配置。一旦模型准备就绪,就可以在测试数据上对其进行测试。
培训结束后,您可以评估测试仪的准确性。
如果您的训练精度为〜90%时仍然是〜70%,则很可能是该模型过度适合了验证集。为了解决这个问题,您可以诉诸
答案 1 :(得分:0)
如Stuart Russell和Peter Norvig在“人工智能:一种现代方法”中指出的那样
...您仍然想衡量未见数据的性能,以此来 选择一个良好的假设,然后将可用数据... 训练集和验证集。
在训练过程中,通常会在验证损失增加但火车损失减少时,在每个时期绘制训练和验证损失(或准确性),然后停止训练。
您显然过度拟合,请参见下面的图
如果数据太小而无法拆分以进行训练验证测试,该怎么办?:使用k倍交叉验证策略。