(1)归根到底,torch.mean()函数是求平均值的
(2)深度学习时,图片通常是四位的即[b,c,h,w]。其中b表示图片个数,c、h、w分别表示每一个图片通道数,高和宽
假设 y = torch.arange(24).view(2,2,3,2)。也就是有两个图片,每个图片的维度、高、宽是2,3,2
①torch.mean(dim = 0 , keepdim = True)
对某一个维度求torch.mean()我们就首先将该维度置为1,因此,这个最终结果的维度一定是[1,2,3,2]。
0为表示的是图像个数,也就是对每一个图像的对应位置求平均值。(下面这段内容可以不看:在看一篇vit相关的论文时,特征图是[b,HW,C],这时在第0维度上进行求平均值代替平均池化的操作。)
②torch.mean(dim = 1 , keepdim = True)
对某一个维度求torch.mean()我们就首先将该维度置为1,因此,这个最终结果的维度一定是[2,1,3,2]。
1维为表示的是每个图像的通道,也就是在同一个图像的对应通道像素值进行求平均,如图。
③torch.mean(dim = 3 , keepdim = True)
对某一个维度求torch.mean()我们就首先将该维度置为1,因此,这个最终结果的维度一定是[2,2,1,2]。第四维我们就不做了实际上从这就已经很清晰啦。
2维为表示的是每个图像的每一个通道的高,因此我们要对每一个图像的每一个通道上的每一个高进行求平均,如图。