對Pytorch中Tensor的各種池化操作解析
阿新 • • 發佈:2020-01-09
AdaptiveAvgPool1d(N)
對一個C*H*W的三維輸入Tensor,池化輸出為C*H*N,即按照H軸逐行對W軸平均池化
>>> a = torch.ones(2,3,4) >>> a[0,1,2] = 0 >>>> a tensor([[[1.,1.,1.],[1.,0.,1.]],[[1.,1.]]]) >>> nn.AdaptiveAvgPool1d(5)(a) tensor([[[1.0000,1.0000,1.0000],[1.0000,0.5000,1.0000]],[[1.0000,1.0000]]]) >>> nn.AdaptiveAvgPool1d(1)(a) tensor([[[1.0000],[0.7500],[1.0000]],[[1.0000],[1.0000],[1.0000]]])
AdaptiveAvgPool2d((M,N))
對一個B*C*H*W的四維輸入Tensor,池化輸出為B*C*M*N,即按照C軸逐通道對H*W平面平均池化
>>> a = torch.ones(2,2,4) >>> a[:,:,1] = 0 >>> a tensor([[[[1.,1.]]],[[[1.,1.]]]]) >>> nn.AdaptiveAvgPool2d((1,2))(a) tensor([[[[0.5000,[[0.5000,1.0000]]],[[[0.5000,1.0000]]]]) >>> nn.AdaptiveAvgPool2d(1)(a) tensor([[[[0.7500]],[[0.7500]]],[[[0.7500]],[[0.7500]]]])
AdaptiveAvgPool3d((M,N,K))
對一個B*C*D*H*W的五維輸入Tensor,池化輸出為B*C*M*N*K,即按照C軸逐通道對D*H*W平面平均池化
>>> a = torch.ones(1,0:2] = 0 >>> a tensor([[[[[0.,[0.,[[0.,1.]]]]]) >>> nn.AdaptiveAvgPool3d((1,2))(a) tensor([[[[[0.,1.]]]]]) >>> nn.AdaptiveAvgPool3d(1)(a) tensor([[[[[0.5000]]],[[[1.0000]]]]])
以上這篇對Pytorch中Tensor的各種池化操作解析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。