Batch Norm和Layer Norm的区别

Batch Norm

x = torch.rand(5, 3, 5, 5) #batchsize=5 RGB图像

x1 = x.permute(1, 0, 2, 3).reshape(3, -1) # 对(N, H, W)计算均值方差
mean = x1.mean(dim=1).reshape(1, 3, 1, 1)
# x1.mean(dim=1)后维度为(3,)
std = x1.std(dim=1, unbiased=False).reshape(1, 3, 1, 1)
my_bn = (x - mean)/std
print((official_bn-my_bn).sum())  # 输出误差

x.permute(1,0,2,3)的作用是将 RGB中的R、G、B抽出来,然后将这些R、G、B放在一起


在这里插入图片描述
变为
在这里插入图片描述

对于permute这个函数,还是要结合()中每个参数的定义去理解

  • 比如RGB图像

    (B C H W) 其中C=3
    B就是图像的个数 C就是三个H、W的灰度图片叠在一起
    x.permute(1,0,2,3)就是C个图像、B个H W的灰度图像叠在一起
    x.permute(0,2,3,1)就是B个图、H个W C的灰度图像叠在一起
    在这里插入图片描述
    W C就是立方体中阴影的平面

  • 比如体数据

    (B C D H W) C通常为1
      
      

Layer Norm

x = torch.rand(5, 3, 5, 5)

x1 = x.reshape(10, -1)  # 对(C,H,W)计算均值方差
mean = x1.mean(dim=1).reshape(10, 1, 1, 1)
std = x1.std(dim=1, unbiased=False).reshape(10, 1, 1, 1)
my_ln = (x - mean)/std
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值