torch.nn模块之卷积层详解

1. torch.nn模块中的卷积层简介

t o r c h . n n torch.nn torch.nn模块包含着t o r c h orch orch已经准备好的卷积层,方便使用者调用构建网络。卷积可以看作是输入和卷积核之间的内积运算,是两个实值函数之间的一种数学运算。在卷积运算中,通常使用卷积核将输入数据进行卷积运算得到输出作为特征映射每个卷积核可获得一个特征映射

例如,二维图像卷积运算过程示意图如下图1所示。卷积核大小为2×2,步长为1。

二维图像卷积运算过程示意图

图1 二维图像卷积运算过程示意图

2. 卷积运算特点

使用卷积运算在图像识别、图像分割、图像重建等应用中有三个好处:

  • 稀疏连接: 在卷积神经网络中,通过输入卷积核来进行卷积操作,使输入单元(图像或特征映射)和输出单元(特征映射)之间的连接是稀疏的,这样能够减少需要训练参数的数量,从而加快网络的计算速度
  • 参数共享: 模型中同一组参数可以被多个函数或操作共同使用。
  • 等变表示: 由于卷积核尺寸可以远远小于输入尺寸,即减少需要学习的参数的数量,并且针对每个卷积层可以使用多个卷积核获取输入的特征映射,对数据具有很强的特征提取和表示能力,并且在卷积运算之后,使得卷积神经网络结构对输入的图像具有平移不变的性质。

3. 卷积的调用方式

在PyTorch中针对卷积操作的对象和使用场景的不同,有一维卷积、二维卷积、三维卷积与转置卷积(卷积的逆操作),它们的使用方法比较相似,都从torch.nn模块中调用,常用的卷积操作对应的类有torch.nn.Conv1d()torch.nn.Conv2d()torch.nn.Conv3d()torch.nn.ConvTranspose1d()torch.nn.ConvTranspose2d()torch.nn.ConvTranspose3d()

torch.nn.Conv2d()为例,其调用方式为:

torch.nn.Conv2d(in_channels,
                out_channels,
                kernel_size,
                stride=0,
                padding=1,
                dilation=1,
                groups=1,
                bias=True)
表1 卷积参数说明
卷积参数 说明
in_channels 输入图像的通道数(整数)
out_channels 经过卷积运算后,输出特征映射的数量(整数)
kernel_size 卷积核的大小(整数或者数组)
stride 卷积的步长(整数或者数组,正数),默认为1
padding 在输入两边进行0填充的数量(整数或者数组,正数),默认为0
dilation 卷积核元素之间的步幅(整数或者数组,正数),可调整空洞卷积的空洞大小,默认为1
groups 从输入通道到输出通道的阻塞连接数(整数,正数)
bias 是否添加偏置(布尔值)默认为True

torch.nn.Conv2d()输入的张量为 ( N , C i n , H i n , W i n ) (N,C_{in},H_{in},W_{in}) (N,Cin,Hin,Win),输出张量为 ( N , C o u t , H o u t , W o u t ) (N,C_{out},H_{out},W_{out}) (N,C

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值