0
点赞
收藏
分享

微信扫一扫

torch.nn 模块の卷积层

torch.nn 模块包含着 torch 已经准备好的层,方便使用者调用构建网络。以下内容介绍卷积层、池化层、激活函数层、循环层、全连接层的相关使用方法。

卷积层

卷积可以看作是输入和卷积核之间的内积运算,是两个实值函数之间的一种数学运算。在卷积运算中,通常使用卷积核将输入数据进行卷积运算得到输出作为特征映射,每个卷积核可获得一个特征映射。
使用卷积运算在图像识别、图像分割、图像重建等应用中有三个好处,即卷积稀疏连接、参数共享、等变表示,正是这些好处让卷积神经网络在图像处理算法中脱颖而出。
在卷积神经网络中,通过输入卷积核来进行卷积操作,使输入单元(图像或特征映射)和输出单元(特征映射)之间的连接是稀疏的,这样能够减少需要训练参数的数量,从而加快网络的计算速度。
卷积操作的参数共享特点,主要体现在模型中同一组参数可以被多个函数或操作共同使用。在卷积神经网络中,针对不同的输入会利用同样的卷积核来获得相应的输出。这种参数共享的特点是只需要训练一个参数集,而不需要对每个位置学习一个参数集合。由于卷积核尺寸可以远远小于输入尺寸,即减少需要学习的参数的数量,并且针对每个卷积层可以使用多个卷积核获取输入的特征映射,对数据(尤其是图像)具有很强的特征提取和表示能力,并且在卷积运算之后,使得卷积神经网络结构对输入的图像具有平移不变的特性。
在 pytorch 中针对卷积操作的对象和使用的场景不同,有一维卷积、二维卷积、三维卷积与转置卷积(可以简单理解为卷积操作的逆操作),但它们的使用方法比较相似,都可以从 torch.nn 模块中调用。

层对应的类功能作用
torch.nn.Conv1d()针对输入信号上应用 1D 卷积
torch.nn.Conv2d()针对输入信号上应用 2D 卷积
torch.nn.Conv3d()针对输入信号上应用 3D 卷积
torch.nn.ConvTranspose1d()在输入信号上应用 1D 转置卷积
torch.nn.ConvTranspose2d()在输入信号上应用 2D 转置卷积
torch.nn.ConvTranspose3d()在输入信号上应用 3D 转置卷积

以 torch.nn.Conv2d() 为例,介绍卷积在图像上的使用方法,其调用方式为:
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
in_channels:(整数)输入图像的通道数
out_channels:(整数)经过卷积运算后,输出特征映射的数量
kernel_size:(整数或者数组)卷积核的大小
stride:(整数或者数组,正数)卷积的步长,默认为1
padding:(整数或者数组,正数)在输入两边进行 0 填充的数量,默认为 0
dilation:(整数或者数组,整数)卷积核元素之间的步幅,该参数可调整空洞卷积的空洞大小,默认为1
groups:(整数,整数)从输入通道到输出通道的阻塞连接数
bias:(布尔值,正数)如果 bias=True,则添加偏执,默认为 True
torch.nn.Conv2d() 输入的张量为 (N, Cin, Hin, Win) 输出的张量为 (N, Cout, Hout, Wout)

举报

相关推荐

0 条评论