我使用 Keras 的 CNN 对 MNIST 数据集进行分类。我发现使用不同的批量大小会产生不同的精度。为什么会这样呢?
使用批量大小 1000 https://i.stack.imgur.com/Ad4oO.png(加速器 = 0.97600)
使用批量大小 10 https://i.stack.imgur.com/CRLd3.png(加速器 = 0.97599)
虽然差别很小,但为什么会有差别呢?编辑-我发现差异只是因为精度问题,它们实际上是相等的。
这是因为训练过程中存在小批量梯度下降效应。你可以找到很好的解释Here https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/我在这里提到了该链接的一些注释:
批量大小是学习过程中的一个滑块。
- 小值可以让学习过程快速收敛
训练过程中的噪声成本。
- 大值可以学习
通过准确估计误差而缓慢收敛的过程
坡度。
该链接的一个重要说明是:
所呈现的结果证实,使用小批量可以实现最佳训练稳定性和泛化性能,对于
考虑到计算成本,在广泛的实验中。在所有
在批量大小 m = 32 或的情况下获得了最佳结果
较小
这是以下结果这张纸 https://arxiv.org/abs/1804.07612.
EDIT
在这里我还应该提两点:
- 因为机器学习算法固有的随机性概念,通常您不应期望机器学习算法(如深度学习算法)在不同的运行中具有相同的结果。您可以找到更多详细信息Here https://machinelearningmastery.com/randomness-in-machine-learning/.
- 另一方面,您的两个结果太接近并且在某种程度上它们是相等的。因此,就您的情况而言,根据报告的结果,我们可以说批量大小对您的网络结果没有影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)