我从某处读到,如果选择2的幂作为批量大小,训练速度会更快。这是怎么回事?这条规则适用于其他应用吗?你能提供一篇参考论文吗?
回答:
从算法的角度讲,使用更大的小批量可以减少随机梯度更新的方差(通过取小批量中梯度的平均值),这反过来允许你采取更大的步长,这意味着优化算法会更快地取得进展。
然而,为了达到目标的某一精度,所做的工作量(以梯度计算的数量来衡量)是相同的:使用大小为n的小批量,更新方向的方差将减少n倍,因此理论上允许你采取n倍大的步长,这样一步就能达到与使用大小为1的小批量进行n步SGD大致相同的精度。
至于TensorFlow,我没有找到支持你说法的证据,这个问题在GitHub上已被关闭:https://github.com/tensorflow/tensorflow/issues/4132
请注意,将图像调整到2的幂大小是有意义的(因为池化通常在2×2的窗口中进行),但这是完全不同的事情。