批量归一化

http://zh-v2.d2l.ai/chapter_convolutional-modern/batch-norm.html

关于这一段“请注意,如果我们尝试使用大小为 1 的小批量应用批量归一化,我们将无法学到任何东西。 这是因为在减去均值之后,每个隐藏单元将为 0。 所以,只有使用足够大的小批量,批量归一化这种方法才是有效且稳定的。 请注意,在应用批量归一化时,批量大小的选择可能比没有批量归一化时更重要”,请问怎么理解呢?这里的批量请问是网络训练的batch吗?

是的。如果是全连接层,对应的batch_size为输入X.shape[0]。如果batch_size为1(只有一个样本),没有均值和方差可言(数值上存在均值和方差),做不了批量归一化

1 Like

是的,指batch_size,notebook上设置为256。如果batch_size为1,那么这个小批量的均值就是这个样本值本身,则样本值减去均值就为0了,也即文中所说的”每个隐藏单元将为 0“,所以batch_size要足够大,但也不要太大

1 Like

所以说,对于2d Conv层的BN操作,均值的计算方法,是该批次下,每个通道里,所有example所有像素的平均值?按代码来看是这样,但是这和公式7.5.2不符合吧?公式7.5.2表达的是,均值的计算只在first dim也就是batch example这一维度求平均,均值应该是个shape为(num_channels,height,width)的tensor。

1 Like

对的。7.5.2中𝐱是一个tensor,可以是n维的

请问一下我在按课程中代码实现LeNet+BatchNorm得到的结果是train loss 和 test loss由较大的差距,为什么加以BatchNorm后出现了过拟合现象呢?

请问课后练习的答案哪里可以找到?谢谢回复

官方没有给答案,而且很多问题是开放性的,有疑惑的地方可以在论坛和大家讨论