对于CNN中卷积的一些理解

图像

图像是由一个个的像素点组合起来的。一般的彩色图像都分为RGB三个通道。
图像就像是一个高纬度的张量,其本质还是由一个个0-255的像素所构成的,对于图像的操作,相当于是对这些像素点的数值进行计算。

卷积

卷积层是要保留图像的空间特征。
构建模型时,先想清楚输入的维度是什么,输出的维度是什么。
在这里插入图片描述


卷积核

通过下面的这个网络说明:
在这里插入图片描述
卷积核的通道数与输入的通道数一致,卷积核的个数与输出的通道数一致。
在没有Padding的情况下,卷积核为3 * 3,输出小一圈,卷积核为5 * 5,输出小两圈。


在进行卷积时,必须设置下面的四个参数:
在这里插入图片描述
这三个数(输入的通道,输出的通道,卷积核的大小)是必须要设置的。和图像的大小是没有关系的。


实例说明

import torch
in_channels, out_channels= 5, 10
width, height = 100, 100
kernel_size = 3
batch_size = 1

input = torch.randn(batch_size,
                    in_channels,
                    width, 
                    height)
conv_layer = torch.nn.Conv2d(in_channels,
                             out_channels,
                             kernel_size=kernel_size)
output = conv_layer(input)

print(input.shape)
print(output.shape)
print(conv_layer.weight.shape)

输出为:

torch.Size([1, 5, 100, 100])
torch.Size([1, 10, 98, 98])
torch.Size([10, 5, 3, 3])

在这个实例中,输出的conv_layer.weight.shape中,10就是out_channels,5就是in_channels

1 * 1卷积核的作用

可以在改变图像通道数的同时,比使用3 * 3或者5 * 5 卷积核的计算量小。
举例说明:

  • 在下面这个例子中(加了Padding),用了5*5的卷积将通道数由192变到了32,需要的计算量是120个million,
    在这里插入图片描述
  • 当用了1*1的卷积之后,同样将通道数变为了32,但是计算量只有12个million,比之前要快10倍。
    在这里插入图片描述

补充

关于卷积核个数和通道数:
卷积核的通道数 = 输入的通道个数
卷积核的个数 = 输出通道的个数。
解释:通道卷积过程:加入输入一张三通道的图片,这时有多个卷积核进行卷积,并且每个卷积核都有三通道,分别对这张输入图片的三通道进行卷积操作。每个卷积核,分别输出三个通道,这三个通道进行求和,得到一个featuremap,有多少个卷积核,就有多少个。


参考资料

[1] https://www.bilibili.com/video/BV1Y7411d7Ys?p=10

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半岛铁子_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值