我目前正在Cifar10数据集上训练一个常规网络。假设我有5万张训练图像和5000张验证图像。
为了开始测试我的模型,假设我只从10,000张图像开始,来了解模型的成功程度。
经过40个时代的训练和一个128批大小的每一个时代,我运行我的优化,以尽量减少损失10,000 / 128次,在一批128张图片(SGD)。
现在,假设我找到了一个在验证集上达到70%准确性的模型。满意后,我继续进行全套训练。
这一次,对于每一个时代,我运行优化器,使损失最小化5* 10,000 / 128 ~ 391次。
这使我认为,我在每一个时代的准确性应该比在有限的10,000集上更高。令我非常沮丧的是,有限训练集的准确性提高得更快。在40年代末的全部训练集,我的准确率是30%。
考虑到数据可能损坏,我对训练图像执行有限的运行10-20k,20-30k,30-40k和40-50k。令人惊讶的是,这些运行的每一个结果的准确性~70%,接近于图像的准确性0-10k。
因此产生了两个问题:
发布于 2017-04-09 17:46:30
原来我的直觉是对的,但我的代码不是。
基本上,我一直在使用培训数据(用于培训模型的数据)来运行我的验证准确性,而不是使用验证数据(模型尚未看到的数据)。
在纠正了这一错误后,验证精度不可避免地得到了提高,如预期的那样,使用了更大的训练数据集。
https://stackoverflow.com/questions/43019776
复制相似问题