【深度学习】Inception层详解
2017-04-09 18:28
281 查看
本文参考Torch的dpnn包中Inception层的源码,讲解该模块参数含义以及网络结构。
由于M,N往往很大,这种结构的模型大小和运算量都不小。
卷积运算,输入M层,输出N层,核尺寸k。输入数据大小H*W。
卷积参数数量:weight + bias = M*N*k*k+N
卷积运算量:H*W*N*M^2*K^4
Inception将后续三路中插入一个1*1卷积,让每一路构成能够节省参数的“瓶颈结构”。
在每一路瓶颈结构中,首先从M通道压缩到K通道,再由K通道扩展到N通道。K比M,N都小。
1*1卷积相当于在每个像素施加同一个fully connected层,所以又称为network in network。
根据参数设置,可能有N+1或者N+2个通路。
为设置简便,后文中所有提到的Transfer层和Pooling层都具有统一类型。例如都是ReLU或者都是MaxPooling;所有的BatchNorm层通过统一的开关添加或者取消。
第一个卷积层:减少channel数量,保持原尺寸。涉及参数reduceSize, reduceStride。
第二个卷积层:增加channel数量,同时缩小尺寸。涉及参数outputSize, kernelSize, kernelStride。padding如果设True,选择保持原始尺寸,否则padding为0。
这种先降维度后升维度的瓶颈型结构十分经典,能够利用深层次提高抽象能力,同时节约计算。可见于残差网络,Hourglass人体姿态分析。
Pooling层提取更大范围特征,缩小尺寸。涉及参数poolSize, poolStridue。
卷积层:和前N的个通路的第一个卷积层类似,减少维度,保持原尺寸。涉及参数reduceSize,reduceStridue。
卷积层:和前N的个通路的第一个卷积层类似,减少维度,保持原尺寸。涉及参数reduceSize,reduceStridue。
核心思想
Inception模块的起点是类似下图的结构:通道从M变换到N,把多个不同尺寸的卷积结果串接(concat)起来。由于M,N往往很大,这种结构的模型大小和运算量都不小。
卷积运算,输入M层,输出N层,核尺寸k。输入数据大小H*W。
卷积参数数量:weight + bias = M*N*k*k+N
卷积运算量:H*W*N*M^2*K^4
Inception将后续三路中插入一个1*1卷积,让每一路构成能够节省参数的“瓶颈结构”。
在每一路瓶颈结构中,首先从M通道压缩到K通道,再由K通道扩展到N通道。K比M,N都小。
1*1卷积相当于在每个像素施加同一个fully connected层,所以又称为network in network。
整体结构
Inception的最外层结构是一个DepthConcat,把各路数据沿第2维(channel维度)串联起来。根据参数设置,可能有N+1或者N+2个通路。
为设置简便,后文中所有提到的Transfer层和Pooling层都具有统一类型。例如都是ReLU或者都是MaxPooling;所有的BatchNorm层通过统一的开关添加或者取消。
前N个通路
前N个通路的核心是两个卷积层(绿),分别后续BatchNorm(青)和Transfer(红)。第一个卷积层:减少channel数量,保持原尺寸。涉及参数reduceSize, reduceStride。
第二个卷积层:增加channel数量,同时缩小尺寸。涉及参数outputSize, kernelSize, kernelStride。padding如果设True,选择保持原始尺寸,否则padding为0。
这种先降维度后升维度的瓶颈型结构十分经典,能够利用深层次提高抽象能力,同时节约计算。可见于残差网络,Hourglass人体姿态分析。
第N+1个通路
这个通路的核心是一个Pooling层(灰),以及一个可选择的卷积层(绿),后接BatchNorm和Transfer。Pooling层提取更大范围特征,缩小尺寸。涉及参数poolSize, poolStridue。
卷积层:和前N的个通路的第一个卷积层类似,减少维度,保持原尺寸。涉及参数reduceSize,reduceStridue。
第N+2个通路
这一通路本身是可选择的,核心是一个卷积层,后接BatchNorm和Transfer。卷积层:和前N的个通路的第一个卷积层类似,减少维度,保持原尺寸。涉及参数reduceSize,reduceStridue。
组合
如果各个通路输出尺寸不同,将各结果中心对齐,补零之后串联。相关文章推荐
- 基于OpenCL的深度学习工具:AMD MLP及其使用详解
- [置顶] 【深度学习&分布式】Parameter Server 详解
- 【深度学习理论3】ALexNet模型的详解
- 深度学习Matlab工具箱代码详解
- 深度学习元老Yann Lecun详解卷积神经网络
- [XML学习笔记]002-格式正规的XML文档、XML文档的元素、属性、实体深度详解
- [深度学习]人工神经网络中激励函数作用详解
- 【深度学习】笔记5_caffe数据层参数的详解
- 【深度学习】笔记4_caffe第二个比较经典的[小图片]识别例子CIFAR_10的运行,网络模型的详解
- 大数据架构详解从数据获取到深度学习读书笔记
- 【深度学习&分布式】Parameter Server 详解
- 结构递归神经网络: 时空领域图像中的深度学习--CVPR2016最佳论文详解
- 2.2 深度学习环境配置分部详解
- 【深度学习】笔记6:使用caffe中的CIFAR10网络模型和自己的图片数据训练自己的模型(步骤详解)
- 深度学习算法实践8---BP算法详解
- 深度学习Matlab工具箱代码详解
- 【深度学习】聚焦机制DRAM(Deep Recurrent Attention Model)算法详解
- 深度学习caffe平台--train_val.prototxt文件中视觉层(Vision Layers)层及参数详解
- 2.2 深度学习环境配置分部详解
- [深度学习]Ubuntu16.04 + GTX 1050 + cuda8.0 + cuDNN5.1 + caffe安装详解