我目前正在Cifar10数据集上训练一个convulotional网络。让我们说我有50,000张训练图像和5,000张验证图像。
要开始测试我的模型,让我们说我只从10,000张图片开始,以了解模型的成功程度。
经过40个训练时期和128个批次大小 - 即每个时代我都在运行我的优化器,以便在一批128张图像(SGD)上将损失减少10,000 / 128~78次。
现在,让我们说我找到了一个在验证集上达到70%准确度的模型。很满意,我继续训练完整的训练集。
这一次,对于每个时代,我运行优化器以最小化损失5 * 10,000 / 128~391次。
这让我觉得我在每个时代的准确性应该高于有限的10,000个。令我沮丧的是,有限训练集的准确性增加得更快。在完整训练集的40个时代结束时,我的准确率为30%。
认为数据可能已损坏,我在10-20k,20-30k,30-40k和40-50k的训练图像上执行有限的运行。令人惊讶的是,这些运行中的每一个都产生了约70%的准确度,接近0-10k图像的准确度。
因此出现了两个问题:
答案 0 :(得分:0)
事实证明我的直觉是正确的,但我的代码却没有。
基本上,我一直在使用训练数据(用于训练模型的数据)运行验证准确性,而不是验证数据(模型尚未看到的数据)。
在纠正此错误后,正如预期的那样,通过更大的训练数据集,验证准确性不可避免地得到改善。