深度学习中,卷积运算为何能对图像矩阵进行升维降维?

最近有小伙伴表示不理解1*1卷积为何能对输入矩阵进行升维降维,所以我这里专门来讲一下。

当然不止1*1卷积,其实所有不同kernel_size的卷积都能实现降维和升维。现在很多深度学习的第三方库,比如Pytorch、tensorflow帮我们完成了很多基础运算,但作为AI研究者,还是应该知道卷积具体在做什么。在这里,我默认读者知道数学上的卷积运算和互相关运算(cross-correlation),深度学习中,每一个卷积核实际上进行的是数学上的互相关运算。如果不清楚的请看这里:

【中英字幕】吴恩达深度学习课程第四课 — 卷积神经网络_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com/video/BV1F4411y7o7?p=5​编辑

(1)卷积计算时的尺寸变化

比如你有一张输入图像的尺寸是(3, 224, 224),3是通道数(常见的RGB图像的通道数就是3), 224*224是图片的宽×高,如果我们用一个kernel_size为3,步长为2,padding为1的卷积核去对图像进行卷积运算,那么我们可以将图像大小变为(224+2*1-3)//2 + 1= 112, 也就是新的图像大小为112*112,而通道数我们是可以任意设置的,这是为什么呢? 因为卷积核的真实尺寸并不是(3,3),而是(3,3,3),其中第一个3必须和图像的输入通道数保持一致,后面的两个3才是卷积核的宽×高大小。而假设当我们有128个这样的卷积核时,完整卷积核的尺寸其实是(128,3,3,3),也就是说,共有128个(3,3,3)的卷积核,而每一个(3,3,3)的卷积核都会跟(3,224,224)的图像进行卷积运算得到一个(112,112)的结果,然后再把128个结果concatenate到一起,就会得到(128,112,112)的最终计算结果,也就是所谓输出通道数为128,本质上输出通道数是卷积核的个数。而深度学习的库里面,帮我们隐藏了卷积核的真实尺寸,所以会导致部分同学的误解,要知道,卷积核计算时的真实大小是
(img_channels, kernel_size, kernel_size),然后输出通道数实际上就是这样的卷积核的个数。

(2)示例

如下图所示,对于一个RGB图像(尺寸为6×6×3)而言,一个3*3大小的卷积核的真实尺寸其实是(3,3,3),而如果要实现升维降维,就需要N个这样的卷积核(N,3,3,3),那么实际输出的特征矩阵大小就为(N,4, 4),也就是:

(6,6,3)*(N,3,3,3) = (N,4,4) , *表示卷积计算

到这里,有的小伙伴又有疑问了,他们会问,为什么拿多个卷积核去对图像重复区域进行计算会有效果?答案是,每个卷积核中的参数不一样,所以得到的计算结果也不一样,而在神经网络反向传播时,会通过梯度下降对卷积核的参数进行调整,从而优化计算结果。值得注意的是,卷积核的参数其实就是我们所说的神经网络中神经元的参数,也是我们要训练的参数。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值