为什么CNN的kernel和batch size是2的次幂?

我想在文章中解释一下网络的batch size参数选择原因,吴恩达在deep Learning中说过选择2的次幂可以加快二进制的计算,但没说具体的原因。
请问是什么原因,有没有相关的论文引用一下。

链接:https://www.nowcoder.com/questionTerminal/832412088a4e4e2ab776330bf2a3ac53
来源:牛客网

机器学习训练时,Mini-Batch 的大小优选为2 的幂,如 256 或 512。它背后的原因是什么?

Mini-Batch 为偶数的时候,梯度下降算法训练的更快

**Mini-Batch 设为 2 的幂,是为了符合 CPU、GPU 的内存要求,利于并行化处理**

不使用偶数时,损失函数是不稳定的

其他选项说法都不对

没有这个说法,特别是batch size,我就喜欢用100*N,也没什么问题。至于kernel,这个要考虑到pooling layer,它的缩放比例,然后正好取一个整倍数。

2的次幂只有在做乘除运算的时候,比较快。好比10进制乘除,最简单的是什么?x10和/10吧。只要移动小数点或者加减尾数的0即可。二进制也一样,x2 /2就是移位。但是这个并不意味着batch size必须是2。或许pooling的时候,取平均值用到一点点。但是对于gpu来说,没区别。