对于CNN中卷积的一些理解
Posted 半岛铁子_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于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倍。
参考资料
[1] https://www.bilibili.com/video/BV1Y7411d7Ys?p=10
以上是关于对于CNN中卷积的一些理解的主要内容,如果未能解决你的问题,请参考以下文章