pytorch 中的通道池化

Jud*_*Raj 5 conv-neural-network max-pooling pytorch

在张量流中,我可以在深度维度上进行池化,这将减少通道并保持空间维度不变。我试图在 pytorch 中做同样的事情,但文档似乎说池只能在高度和宽度尺寸上完成。有没有办法可以在 pytorch 中汇集通道?我有一个形状张量,[1,512,50,50]我正在尝试使用池化将通道数量减少到 3。我看到了这个问题,但没有发现答案有帮助。

pen*_*sky 4

减少通道数量的最简单方法是使用 1x1 内核:

import torch                                                                                                                                                                                               

x = torch.rand(1, 512, 50, 50)                                                                                                                                                                                  
conv = torch.nn.Conv2d(512, 3, 1)                                                                                                                                                                             
y = conv(x)                                                                                                                                                                                                   

print(y.size())                                                                                                                                                                                                   
# torch.Size([1, 3, 50, 50])
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因您确实需要沿着通道维度执行池化,您可能需要排列维度,以便通道维度与其他维度(例如宽度)交换。这里引用了这个想法。