Pytorch系列之——nn网络层

本文介绍了PyTorch中的卷积层nn.Conv2d和转置卷积nn.ConvTranspose2d。卷积层用于特征提取,转置卷积用于上采样。详细讲解了卷积的计算过程、尺寸变化,以及nn.Conv2d的参数。转置卷积则是卷积的逆操作,常用于图像上采样。同时,文章还涉及了池化、线性层和激活函数层的相关内容。
摘要由CSDN通过智能技术生成

卷积层

  • 1d/2d/3d卷积
  • 卷积-nn.Conv2d()
  • 转置卷积-nn.ConvTranspose
1d/2d/3d Convolution

卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘加
卷积核:又称为滤波器,过滤器,可认为是某种模式,某种特征
卷积过程类似于用一个模板去图像上寻找与它相似的区域,与卷积核模式越相似,激活值越高,从而实现特征提取。
AlexNet卷积核可视化,发现卷积核学习到的是边缘、条纹、色彩这一些细节模式:
在这里插入图片描述卷积维度:一般情况下,卷积核在几个维度上滑动,就是几维卷积。
在这里插入图片描述上面的是1维卷积和2维卷积;
在这里插入图片描述

nn.Conv2d

功能:对多个二维信号进行二维卷积。
在这里插入图片描述

主要参数:

  • in_channels:输入通道数
  • out_channels:输出通道数,等价于卷积核个数
  • kernel_size:卷积核尺寸
  • stride:步长
  • padding:填充个数
  • dilation:空洞卷积大小(有空洞的卷积核,常用于图像分割任务,主要作用是提高感受野)
  • groups:分组卷积设置
  • bias:偏置

尺寸计算:
简化版: o u t s i z e = ( I n s i z e − k e r n e l s i z e ) s t r i d e + 1 out_{size}=\frac {(In_{size}-kernel_{size})} {stride}+1 outsize=stride(Insizekernelsize)+1
完整版:
在这里插入图片描述
接下来通过代码学习Conv2d的具体实现细节:
在这里插入图片描述可以看到这里我们设置的随机种子是1,之后在nn.Conv2d中第一个3代表3个通道,第二个1代表使用1个卷积核,第三个3代表卷积核的尺寸我们设置为3 x 3。运行一下程序,可以得到下面的结果:
在这里插入图片描述下面我们修改一下卷积核的权值,这里我们把随机种子改变一下即可改变这个随机权值:
在这里插入图片描述我们将随机种子改为2,再来运行程序看下结果:
在这里插入图片描述可以看到更改卷积核权重之后图像的差别还是蛮大的,头发部分响应值比较高而其他部分响应值则比较低。

下面分析一下卷积前后图像尺寸的变化:
在这里插入图片描述
可以看到,卷积前图像的尺寸是512 x 512的,这里的卷积核的设置是kernel_size为3的卷积核,且没有padding步长为1,所以这个卷积核的计算公式就是(input_size-kernel_size)/stride+1,也就是(512-3)/1+1=510。
前面说过conv2d也是一个Module,所以我们还是来看一下主要的modules和parameters这两个参数:
在这里插入图片描述
如上所述,parameters这个字典里存放了权重weight和偏差bias。
在这里插入图片描述
从weight这个属性里可以进一步看到,卷积核在这里存储的是一个4维张量,其中1表示输出通道数,3表示输入通道数,后面的两个3表示卷积核的尺寸为3 x 3,那么可能会有个疑问,一个3维的3x3的卷积核怎么去进行2维的卷积操作呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Despacito1006

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

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

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

打赏作者

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

抵扣说明:

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

余额充值