**
学批量归一化时,关于x.mean(dim=0,keepdim=True)的一些问题
**
人生的第一篇博客,记录下自己的进步
今天学了批量归一化里面的一些问题,其中x.mean(dim=0,keepdim=True)困扰了我,搞懂后记录下来
举例子:
x = [
[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
[[13,14,15,16],[17,18,19,20],[21,22,23,24]]
]
x.shape=[2,3,4]
首先认识到:dim=0 ->2 dim=1 ->3 dim=2->4
x.mean(dim=0) -> tensor([[ 7., 8., 9., 10.], 解释:以列为单位,共三列,故这里有3行,每行里的元素如何计算的呢?
[11., 12., 13., 14.], 7=mean(1,13),8=mean(2,14),9=mean(3,15),10=mean(4,16),按列取均值
[15., 16., 17., 18.]])
x.mean(dim=1) -> tensor([[ 5., 6., 7., 8.], 解释:以行为单位,共两行,故这里有2行,里面的元素如何计算的呢?
[17., 18., 19., 20.]]) 5=mean(1,5,9),6=mean(2,6,10),7=mean(3,7,11),8=mean(4,8,12),按行对应
元素取均值
x.mean(dim=2) -> tensor([[ 2.5000, 6.5000, 10.5000], 解释:这里的元素,就是各自中括号里的4个元素的均值啦,2.5=mean(1,2,3,4)
[14.5000, 18.5000, 22.5000]])
接下来解释:x.mean(dim=0,keepdim=True)
keepdim=True 就是为了让维度不变
见证图片吧!
还是接着上面的例子:
x.mean(dim=0,keepdim=True) ->
x.mean(dim=0,keepdim=False) ->
x.mean(dim=1,keepdim=True) ->
x.mean(dim=1,keepdim=False) ->
x.mean(dim=2,keepdim=True) ->
。。。。。。。。。。。。。。。。
这个就不放啦!!猜测就是shape=[2,3]
把True改为False后,维度就降了一维了;至于维度个数如何看,看第一个数字前面的中括号个数就行啦!!
前几天拿了个数模国三,和室友今天吃完火锅回到实验室看了这点小知识,记录下来,冲鸭!## 标题
PS:贴上代码自己运行下哈
import torch
x = torch.tensor([
[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
[[13,14,15,16],[17,18,19,20],[21,22,23,24]]
]).float()
print(x)
x.mean(dim=1,keepdim=True)
x.mean(dim=2,keepdim=True)
x.mean(dim=3,keepdim=True)