avg = nn.AdaptiveAvgPool2d(1) 和 torch.mean

import torch
import torch.nn as nn

a = torch.rand(2,3,4,4)

nn.AdaptiveAvgPool2d(1),就是将各4*4的矩阵变成1*1.

torch.mean:可以理解为,对哪一维做平均,就是将该维所有的数做平均,压扁成1层(实际上这一层就给合并掉了),而其他维的形状不影响。

avg = nn.AdaptiveAvgPool2d(1) 和 torch.mean_第1张图片

nn.AdaptiveAvgPool2d(1),就是将各4*4的矩阵变成1*1.

avg = nn.AdaptiveAvgPool2d(1)(a)

torch.mean(a,dim=1),例如dim=1的话,就是将(2,3,4,4)在dim=1上进行合并,变为(2,1,4,4)。然后自己理解着就知道怎么求的平均了。

想象三个4*4的矩阵是一层一层叠放在一起的。然后每个对应位置(如坐标(1,1)(1,2)。。。)累加在一起,就变成一个4*4的了。

mean = torch.mean(a,dim=1)
mean2 = torch.mean(a,dim=1,keepdim=True)



应用:

理解一下。

nn.AdaptiveAvgPool2d(1) 是对三通道的图横向上(各通道独自)求和取平均,大家最后为(1*1)

torch.mean(a,dim=1)是对三通道的图纵向上(三通道之间)求和取平均,最后变成1通道。

你可能感兴趣的:(pytorch,深度学习,机器学习)