文章目录
参考:https://blog.csdn.net/oldmao_2001/article/details/102844727
Convolution layers 卷积层
关于各种卷积的动图演示:https://github.com/vdumoulin/conv_arithmetic
API 结构:
nn.Conv2d 卷积
nn.Conv2d()
功能:对多个二维信号进行二维卷积
主要参数:
- in_channels:输入通道数
- out_channels:输出通道数,等价于卷积核个数
- kernel_size:卷积核尺寸
- stride:步长
- padding:填充个数
- dilation:空洞卷积大小
- groups:分组卷积设置
- bias:偏置
这里介绍一下空洞卷积(Dilated Convolution)。
空洞卷积的作用:是扩大 kernel 的感受野。
问题:一个RGB的图片转化为三维的张量后做卷积为什么不是三维卷积而是二维卷积呢?
因为 RGB 三个通道每个通道都是单独的一个卷积核进行操作,每个卷积核在 X、Y 两个维度上滑动,所以是二维卷积。三个卷积核得到的结果相加然后加上 bias,得到输出的一个结果。
nn.ConvTranspose 转置卷积
转置卷积又称为反卷积 (这个名字一般不用,避免和信号处理里面的反卷积重复)(Deconvolution)和部分跨越卷积(Fractionally strided Convolution),用于对图像进行上采样(UpSample)
为什么称为转置卷积?如图:
注:蓝色部分是 Input,青色部分是 Output。
Pooling Layer 池化层
池化运算:对信号进行“收集”并“总结”,类似水池收集水资源,因而得名池化层
收集:多变少
总结:取最大值或平均值
nn.MaxPool2d
功能:对二维信号(图像)进行最大值池化
主要参数:
- kernel_size:池化核尺寸
- stride:步长(通常与kernel_size一样大,就是不重叠)
- padding:填充个数
- dilation:池化核间隔大小
- ceil_mode:尺寸向上取整
- return_indices:记录池化像素索引(通常是在最大值反池化上采样时使用,)
nn.AvgPool2d
功能:对二维信号(图像)进行平均值池化
主要参数:
- kernel_size:池化核尺寸
- stride:步长
- padding:填充个数
- ceil_mode:尺寸向上取整
- count_include_pad:填充值用于计算
- divisor override:除法因子(设置后不再除以池化核尺寸大小,而是除法因子)
nn.MaxUnpool2d
功能:对二维信号(图像)进行最大值池化上采样
主要参数:
- kernel_size:池化核尺寸
- stride:步长
- padding:填充个数
上采样要记录最大值的索引,所以在forward的时候需要传入index参数。
Linear Layer 线性层
线性层又称全连接层,其每个神经元与上一层所有神经元相连实现对前一层的线性组合,线性变换。
nn.Linear
Activation Layer 激活函数层
这部分推荐看官方 Documentation,有图有公式。