复年年 2020-09-27 15:32 采纳率: 0%
浏览 401

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初始化嘛?

  • 写回答

1条回答 默认 最新

  • 忧王 2020-09-27 18:13
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥15 配置hadoop时start-all.sh老是启动失败
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题