nn模块
卷积层
1d/2d/3d/convolution
卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘加
卷积核:又称为滤波器,过滤器,可认为是某种模式,某种特征
卷积过程类似于用一个模板去图像上寻找与它相似的区域,与卷积核模型越相近,激活值越高,从而实现特征提取
卷积维度:一般情况下,卷积核在几个维度上滑动,就是几维卷积
nn.Conv2d
功能:对多个二维信号进行二维卷积
主要参数:
in_chanels:输入通道数out_channels:输出通道数,等价于卷积核个数kernel_size:卷积核尺寸stride:步长padding:填充个数,通常是保持输入输出的特征分辨率保持不变dilation:空洞卷积大小,常用于图像分割任务,提高感受野groups:分组卷积设置bias:偏置
卷积过程中权值一般一个4维的形状,但是最后为什么做的是2维卷积?
一般查看权值的形状的时候,通常都是shape(c1, c2, c3, c4)
c1输出的维度,有多少卷积核输出就是多少c2输入的维度c3、c4卷积核的大小
输入的图像通常是RGB形式,因为会创建3个卷积核,分别在不同的维度上面进行卷积,然后卷积的值相加,最后加上偏置,得到特征图
转置卷积
用于对图像进行上采样
假设图像尺寸为4*4,卷积核为3*3,paddin=0,stride=1
-
正常卷积
首先将图片拉成一个16*1的向量,这个1代表的是一张图片,然后3*3的卷积自动补零变成16,因为输入是4*4,所以卷积核是4*16,相乘得一个4*1,再reshape变成2*2 -
转置卷积
和上面一样,先拉成一个16*1的向量,卷积核因为输出是一个4*4,但是输入是一个2*2特征图,因为卷积核的大小是16*4,最后输出的就是一个16*1,然后在reshape变成4*4
pytorch也自带转置卷积的函数
nn.ConvTranspose2d功能:转置卷积实现上采样
主要参数:
in_channel:输入通道数out_channel:输出通道数kernel_size:卷积核尺寸stride:步长padding:填充个数dilation:空洞卷积大小groups:分组卷积设置bias:偏置
但是转置卷积会出现棋盘效应,是因为不均匀卷积导致的,且转置卷积是不可逆的
池化层
池化运算:对信号进行“收集”并“总结”,类似水池收集水资源,因而得名池化层
“收集”:多变少 “总结”:最大值/平均值
nn.MaxPool2d
功能:对二维信息(图像)进行最大值池化
主要参数:
kernel_size:池化核尺寸stride:步长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:填充个数
线性层
线性层又称全连接层,其每个神经元与上一层所有的神经元相连接,实现对前一层的线性组合,线性变换
nn.Linear
功能:对一维信号(向量)进行线性组合
主要参数:
in_features:输入结点数out_features:输出结点数bias:是否需要偏置
激活函数层
激活函数对特征进行非线性变换,赋予多层神经网络具有深度的意义
nn.Sigmoid
特性:
- 输出值在
(0,1),符合概率分布 - 导数范围是
[0, 0.25],易导致梯度消失 - 输出为非
0均值,破坏数据分布
nn.tanh
特性:
- 输出值在
(-1,1),数据符合0均值 - 导数范围
(0,1),易导致梯度消失
nn.ReLU
特性:
- 输出值均为正数,负半轴导致神经元坏死
- 导数是
1,缓解梯度消失,但容易引发梯度爆炸
1236

被折叠的 条评论
为什么被折叠?



