cnn:为什么bn层的初始化默认是1呢?可以改变成类似conv2d的weight初始化嘛?

for m in self.modules():
  if isinstance(m, nn.Conv2d):
    n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
    m.weight.data.normal_(0, math.sqrt(2. / n))
    #m.bias.data.zero_()
  elif isinstance(m, nn.BatchNorm2d):
    m.weight.data.fill_(1)
    m.bias.data.zero_()
  elif isinstance(m, nn.Linear):
    init.kaiming_normal(m.weight)
    m.bias.data.zero_()

为什么bn层的初始化默认是1呢?可以改变成类似conv2d的weight初始化嘛?

虽然不是很懂卷积神经网络,但是能看出来这应该是根据不同的模型做不同的参数初始化(或者说权重初始化)吧,方便后续参数拟合
你想换初始化方法也完全可以啊,只是会影响模型拟合效果