GoogLeNet实现的过程
这里以Inception模块构建的GoogLeNet(Inception v1)为例,描述GoogLeNet的实现过程。
(1)输入层
原始输入图像大小为224×224×3,为三通道RGB图像。
(2)卷积层
接收224×224×3的矩阵数据,与64个大小为7×7的卷积核(步长为2,padding为“SAME”)做运算,输出为112×112×64,经过3×3的最大值池化(步长为2),输出矩阵为56×56×64。
(3)卷积层
接收56×56×64的矩阵数据,与192个大小为3×3的卷积核(步长为1,padding为“SAME”)做运算,输出为56×56×192,经过3×3的最大值池化(步长为2),输出矩阵为28×28×192。
(4)Inception 3a层
接收28×28×192的矩阵数据,共4个分支,采用不同尺度的卷积核运算,4个分支步长都为1。
第一个分支:与64个大小为1×1的卷积核做运算,输出矩阵为28×28×64。
第二个分支:与96个大小为1×1的卷积核做运算,输出为28×28×96,再与128个大小为3×3的卷积核(padding为“SAME”)做运算,输出矩阵为28×28×128。
第三个分支:与16个大小为1×1的卷积核做运算,输出为28×28×16,再与32个大小为5×5的卷积核(padding为“SAME”)做运算,输出矩阵为28×28×32。
第四个分支:3×3的最大值池化(padding为“SAME”),输出为28×28×192,32个大小为1×1的卷积核,输出矩阵为28×28×32。
将4个分支进行纵向拼接,层数为64+128+32+32=256,所以输出矩阵为28×28×256。