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 中的二维卷积。
相对于普通卷积,空洞卷积通过在卷积核中添加空洞(
对于一个 的 -空洞卷积运算,实际的卷积核大小还是 。但是空洞为 ,这样卷积核就会扩充一个 的图像块,但只有 个红色的点会有权重取值进行卷积操作。也可以理解为卷积核的大小为 ,但只有图中的 个点的权重不为 ,其他均为 。实际卷积权重只有 ,但感受野实际为 。对于 的,实际卷积只有
详细的空洞卷积分析参考 torch.nn 那一章。
转置卷积的主要作用是将特征图放大恢复到原来的尺寸,其与原有的卷及操作在计算方法上没有差别。主要区别在于,转置卷积是卷积的反向过程,即卷积操作的输入为转置卷积的输出,卷积操作的输出为转置卷积的输入。
在 NLP 中,由于词嵌入层中每一行都表示一个词语,即每个词语都是有一个词向量表示的,当提取句子中有利于分类的特征时,需要从词语或字符级别提取,也就是说卷积核的宽度要你管管个覆盖完全单个词向量,即二维卷积的卷积核宽度必须等于词向量的维度。
池化操作的一个重要目的就是对卷积后得到的特征映射进行降维,常用的有最大值池化和平均值池化,前文的 torch.nn 中已有介绍。
全连接层通常会放在卷积神经网络的最后几层,起到分类器的作用。连接卷积层时,需要将卷积层的所有特征映射展开为一个向量,作为全连接网络的输入层,然后连接。
经典卷积神经网络与调用接口
LetNet-5 网络
它是最早提出的一类卷积神经网络,主要用于处理手写字体(MNIST)的识别。
AlexNet 网络
层, 个卷积层,
卷积核逐步从 减小到 ,池化层使用大小 ,步长为 的池化,两个全连接层分别包含 个神经元,最后输出使用 softmax 分类器,包含
import torchvision.models as models
alexnet = models.alexnet()
VGG 网络
四种不同深度层次的卷积神经网络,分别是
最常用的分别是 VGG16 和 VGG19 。
在 VGG 网络中,通过使用多个较小卷积核 来代替一个卷积核较大的卷积层,这是它的一个重要特点。作者认为 个 的卷积对获得的感受野相当于一个
它采用 的池化层,并且有更多的特征映射,第一层通道为 ,后面每层翻倍,逐渐到了
import torchvision.models as models
vgg16 = models.vgg16()
vgg19 = models.vgg19()
GoogLeNet 网络
GoogLeNet 也称作 Inception 。它有
前几层是正常的卷积层,后面全部用 Inception 堆叠而成。
同时它添加了两个辅助分类器,增加低层网络的分类能力,防止梯度消失,增加网络正则化。
import torchvision.models as models
googlenet = models.googlenet()
TextCNN
应用于自然语言处理的 CNN 。在网络结构中,针对一个句子的词嵌入使用以层卷积层进行文本信息的提取。在卷积操作时,使用高度为 的卷积核,每个有 个,共 个( 个 , 个 , 个 )。因此会得到 个向量,对此
其他的经典卷积网络,比如说 NiN, ResNet, DenseNet 的结构和代码实现,将在后面章节介绍。