您的位置:首页 > 其它

【深度学习】Inception层详解

2017-04-09 18:28 281 查看
本文参考Torch的dpnn包中Inception层的源码,讲解该模块参数含义以及网络结构。

核心思想

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

组合

如果各个通路输出尺寸不同,将各结果中心对齐,补零之后串联。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习 Torch