CNN中1*1卷积核与Pytorch实现

CNN中1*1卷积核的意义

    • 信道压缩


信道压缩

  • 一个32* 6* 6的图片,32通道,6维矩阵图片
  • 当用32* 1* 1的的卷积核提取特征时,得到的是一个6*6的图片
  • 卷积运算中输出的通道数与卷积核的数量有关,但是计算过程中,图片的通道数要和卷积核的通道数相同

此时,通过1维卷积核将原来图片在通道维度上进行压缩,即将通道信息进行融合

1* 1也可以理解为一个全连接网络,分别作用所有通道上面

总结:

总结一下,1x1的卷积核可以进行降维或者升维,也就是通过控制卷积核(通道数)实现,这个可以帮助减少模型参数,也可以对不同特征进行尺寸的归一化;同时也可以用于不同channel上特征的融合。一个trick就是在降维的时候考虑结合传统的降维方式,如PCA的特征向量实现,这样效果也可以得到保证。

import torch

a = torch.randn(1, 2, 32, 32)  
conv3x1 = torch.nn.Conv2d(2, 2, (3, 1), padding=(1, 0))  # 3x1卷积
conv1x3 = torch.nn.Conv2d(2, 2, (1, 3), padding=(0, 1))  # 1x3卷积

out = conv3x1(a)
print(out.shape)  
out = conv1x3(out)
print(out.shape)

你可能感兴趣的:(深度学习,卷积,计算机视觉,深度学习,人工智能,python)