Pytorch:卷积神经网络概述

Pytorch: 卷积神经网络概述

Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificial and Intelligence, Huazhong University of Science and Technology

Pytorch教程专栏链接


本教程不商用,仅供学习和参考交流使用,如需转载,请联系本人。

卷积神经网络的基本单元

在 torch.nn 中已经介绍了图像的二维卷积,下面讲解空洞卷积,转置卷积与应用于 NLP 中的二维卷积。

相对于普通卷积,空洞卷积通过在卷积核中添加空洞( 0 0 0 元素),从而增大感受野,获取更多信息。感受野为在卷积神经网络中,决定某一层输出结果中一个元素对应的输入层的区域大小,通俗解释就是特征映射上的一个点对应输入图上的区域大小。

对于一个 3 × 3 3\times3 3×3 2 2 2-空洞卷积运算,实际的卷积核大小还是 3 × 3 3\times3 3×3 。但是空洞为 1 1 1 ,这样卷积核就会扩充一个 7 × 7 7\times7 7×7 的图像块,但只有 9 9 9 个红色的点会有权重取值进行卷积操作。也可以理解为卷积核的大小为 7 × 7 7\times7 7×7 ,但只有图中的 9 9 9 个点的权重不为 0 0 0 ,其他均为 0 0 0 。实际卷积权重只有 3 × 3 3\times3 3×3 ,但感受野实际为 7 × 7 7\times7 7×7 。对于 15 × 15 15\times15 15×15 的,实际卷积只有 9 × 9 9\times9 9×9

详细的空洞卷积分析参考 torch.nn 那一章。

转置卷积的主要作用是将特征图放大恢复到原来的尺寸,其与原有的卷及操作在计算方法上没有差别。主要区别在于,转置卷积是卷积的反向过程,即卷积操作的输入为转置卷积的输出,卷积操作的输出为转置卷积的输入。

在 NLP 中,由于词嵌入层中每一行都表示一个词语,即每个词语都是有一个词向量表示的,当提取句子中有利于分类的特征时,需要从词语或字符级别提取,也就是说卷积核的宽度要你管管个覆盖完全单个词向量,即二维卷积的卷积核宽度必须等于词向量的维度。

池化操作的一个重要目的就是对卷积后得到的特征映射进行降维,常用的有最大值池化和平均值池化,前文的 torch.nn 中已有介绍。

全连接层通常会放在卷积神经网络的最后几层,起到分类器的作用。连接卷积层时,需要将卷积层的所有特征映射展开为一个向量,作为全连接网络的输入层,然后连接。

经典卷积神经网络与调用接口
LetNet-5 网络

它是最早提出的一类卷积神经网络,主要用于处理手写字体(MNIST)的识别。

AlexNet 网络

8 8 8 层, 5 5 5 个卷积层, 3 3 3 个全连接层,每个卷积层都包含一个 ReLU ,以及局部响应归一化( LRN )处理,卷积计算后通过最大值池化对特征映射进行降维。

卷积核逐步从 11 11 11 减小到 3 3 3 ,池化层使用大小 3 × 3 3\times3 3×3 ,步长为 2 2 2 的池化,两个全连接层分别包含 4096 4096 4096 个神经元,最后输出使用 softmax 分类器,包含 1000 1000 1000 个神经元。

import torchvision.models as models
alexnet = models.alexnet()
VGG 网络

四种不同深度层次的卷积神经网络,分别是 11 、 13 、 16 、 19 11、13、16、19 11131619 层。

最常用的分别是 VGG16 和 VGG19 。

在 VGG 网络中,通过使用多个较小卷积核 3 × 3 3\times3 3×3 来代替一个卷积核较大的卷积层,这是它的一个重要特点。作者认为 2 2 2 3 × 3 3\times3 3×3 的卷积对获得的感受野相当于一个 7 × 7 7\times7 7×7 的卷积。使用小卷积一方面能减少参数,另一方面相当于进行了更多的非线性映射,进一步增强了网络的拟合能力。

它采用 2 × 2 2\times2 2×2 的池化层,并且有更多的特征映射,第一层通道为 64 64 64 ,后面每层翻倍,逐渐到了 512 512 512 个通道,使得它能提取更多信息。且它有更深的层数,能得到更宽的特征映射。

import torchvision.models as models
vgg16 = models.vgg16()
vgg19 = models.vgg19()
GoogLeNet 网络

GoogLeNet 也称作 Inception 。它有 22 22 22 层,且没有采用全连接,参数更少。在保证算力的情况下增大网络的深度和宽度。

前几层是正常的卷积层,后面全部用 Inception 堆叠而成。

同时它添加了两个辅助分类器,增加低层网络的分类能力,防止梯度消失,增加网络正则化。

import torchvision.models as models
googlenet = models.googlenet()
TextCNN

应用于自然语言处理的 CNN 。在网络结构中,针对一个句子的词嵌入使用以层卷积层进行文本信息的提取。在卷积操作时,使用高度为 2 、 3 、 4 2、3、4 234 的卷积核,每个有 2 2 2 个,共 6 6 6 个( 2 2 2 2 × 5 2\times5 2×5 2 2 2 3 × 5 3\times5 3×5 2 2 2 4 × 5 4\times5 4×5)。因此会得到 6 6 6 个向量,对此 6 6 6 个各取一个最大值进行池化,然后拼接成一个列向量,该列向量即为通过一层卷积操作提取到的有用信息。

其他的经典卷积网络,比如说 NiN, ResNet, DenseNet 的结构和代码实现,将在后面章节介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值