使用的批量大小为';2'的幂;在tensorflow上更快?

使用的批量大小为';2'的幂;在tensorflow上更快?,tensorflow,machine-learning,deep-learning,batchsize,Tensorflow,Machine Learning,Deep Learning,Batchsize,我从某个地方读到,如果您选择的批量大小为幂2,培训将更快。这条规则是什么?这是否适用于其他应用程序?你能提供一份参考文件吗?从算法上讲,使用较大的小批量可以减少随机梯度更新的方差(通过取小批量中梯度的平均值),而这反过来又允许你采取较大的步长,这意味着优化算法将加快进度 然而,在目标中达到一定精度所做的工作量(根据梯度计算的数量)将是相同的:当最小批量大小为n时,更新方向的方差将减少因子n,因此理论允许您采用n倍大的步长,因此,一个步骤将使您大致达到与n个步骤SGD相同的精度,最小批量为1 至于

我从某个地方读到,如果您选择的批量大小为幂2,培训将更快。这条规则是什么?这是否适用于其他应用程序?你能提供一份参考文件吗?

从算法上讲,使用较大的小批量可以减少随机梯度更新的方差(通过取小批量中梯度的平均值),而这反过来又允许你采取较大的步长,这意味着优化算法将加快进度

然而,在目标中达到一定精度所做的工作量(根据梯度计算的数量)将是相同的:当最小批量大小为n时,更新方向的方差将减少因子n,因此理论允许您采用n倍大的步长,因此,一个步骤将使您大致达到与n个步骤SGD相同的精度,最小批量为1

至于tensorFlow,我没有发现你肯定的证据,这是一个关于github的问题:


请注意,将图像大小调整为二次方是有意义的(因为池通常在2X2窗口中完成),但这完全是另一回事。

我也听说过这一点。以下是一份关于CIFAR-10培训的白皮书,一些英特尔研究人员声称:

通常,如果批量大小为2的幂,处理器的性能会更好

(见:)

然而,由于作者没有提供任何训练持续时间数据,因此尚不清楚优势到底有多大:/

这一概念来自于将计算(
C
)与物理模型对齐 GPU的处理器(
PP

由于PP的数通常是2的幂,因此使用不同于2的幂的
C
数会导致性能不佳

您可以将
C
映射到
PP
上,作为一堆大小为
PP
数量的切片。 假设你有16个
PP
。 您可以在它们上面映射16个
C
:1
C
映射到1
PP
。 你可以将32个
C
映射到它们上面:16个
C
的2个切片,1个
PP
将负责2个
C


这是由于GPU使用的范例。这通常被称为数据并行:所有的
PP
在同一时间做相同的事情,但在不同的数据上。

如果您使用gpu计算,并且如果tensorflow使用批大小作为全局工作大小,那么“取小批中梯度的平均值”是什么意思当使用更大的小批量时?这确实不是最好的措辞。小批量中的每个元素都会给你一个梯度,你可以对它们进行平均。基本上…如果你的小批量大小为10…那么梯度将在这十个示例中进行平均,并在一次快照中更新。