Pytorch: 卷积神经网络概述

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

Pytorch教程专栏链接


文章目录

  • Pytorch: 卷积神经网络概述
  • @[toc]
  • 卷积神经网络的基本单元
  • 经典卷积神经网络与调用接口
  • LetNet-5 网络
  • AlexNet 网络
  • VGG 网络
  • GoogLeNet 网络
  • TextCNN

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

卷积神经网络的基本单元

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

相对于普通卷积,空洞卷积通过在卷积核中添加空洞( 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络

对于一个 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_02二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_03-空洞卷积运算,实际的卷积核大小还是 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_02 。但是空洞为 二维的卷积神经网络 二维卷积神经网络pytorch_cnn_05 ,这样卷积核就会扩充一个 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_06 的图像块,但只有 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_07 个红色的点会有权重取值进行卷积操作。也可以理解为卷积核的大小为 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_06 ,但只有图中的 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_07 个点的权重不为 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络 ,其他均为 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络 。实际卷积权重只有 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_02 ,但感受野实际为 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_06 。对于 二维的卷积神经网络 二维卷积神经网络pytorch_pytorch_14 的,实际卷积只有 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_15

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

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

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

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

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

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

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

AlexNet 网络

二维的卷积神经网络 二维卷积神经网络pytorch_二维的卷积神经网络_16 层,二维的卷积神经网络 二维卷积神经网络pytorch_pytorch_17 个卷积层, 二维的卷积神经网络 二维卷积神经网络pytorch_二维的卷积神经网络_18

卷积核逐步从 二维的卷积神经网络 二维卷积神经网络pytorch_cnn_19 减小到 二维的卷积神经网络 二维卷积神经网络pytorch_二维的卷积神经网络_18 ,池化层使用大小 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_02 ,步长为 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_03 的池化,两个全连接层分别包含 二维的卷积神经网络 二维卷积神经网络pytorch_cnn_23 个神经元,最后输出使用 softmax 分类器,包含 二维的卷积神经网络 二维卷积神经网络pytorch_二维的卷积神经网络_24

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

四种不同深度层次的卷积神经网络,分别是 二维的卷积神经网络 二维卷积神经网络pytorch_二维的卷积神经网络_25

最常用的分别是 VGG16 和 VGG19 。

在 VGG 网络中,通过使用多个较小卷积核 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_02 来代替一个卷积核较大的卷积层,这是它的一个重要特点。作者认为 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_03二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_02 的卷积对获得的感受野相当于一个 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_06

它采用 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_30 的池化层,并且有更多的特征映射,第一层通道为 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_31 ,后面每层翻倍,逐渐到了 二维的卷积神经网络 二维卷积神经网络pytorch_cnn_32

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

GoogLeNet 也称作 Inception 。它有 二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_33

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

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

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

应用于自然语言处理的 CNN 。在网络结构中,针对一个句子的词嵌入使用以层卷积层进行文本信息的提取。在卷积操作时,使用高度为 二维的卷积神经网络 二维卷积神经网络pytorch_pytorch_34 的卷积核,每个有 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_03 个,共 二维的卷积神经网络 二维卷积神经网络pytorch_pytorch_36 个( 二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_03二维的卷积神经网络 二维卷积神经网络pytorch_二维的卷积神经网络_38二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_03二维的卷积神经网络 二维卷积神经网络pytorch_深度学习_40二维的卷积神经网络 二维卷积神经网络pytorch_神经网络_03二维的卷积神经网络 二维卷积神经网络pytorch_pytorch_42)。因此会得到 二维的卷积神经网络 二维卷积神经网络pytorch_pytorch_36 个向量,对此 二维的卷积神经网络 二维卷积神经网络pytorch_pytorch_36

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