介绍
Google Net 身为 2014年ILSVRC的冠军,自然是有其高明之处,所以,看看!
网络结构分析
这个玩意说起来就是它所创立的结构 叫做Inception
将输入的数据 分成四条路:
1、Conv 11 stride = 1
2、Conv 11 stride = 1 + Conv 33 stride = 1 padding = same
3、Conv 11 stride = 1 + Conv 33 stride = 1 padding = same + Conv 33 stride = 1 padding = same
4、Maxpooling pool_size = 3 stride = 2 padding = same + Conv 1*1 stride = 1
5、将上述的四条路 处理的数据 合并到一起输出即可。
例: 假设 输入是 2828256
1、用 32个11256的卷积核进行卷积,最后得到 282832 的结果
2、第二步重复第一步的内容后,用16个3332的卷积核进行处理,得到 282816的输出。
3、同理,由于padding = same 处理前后的h,w维度不会发生变化,只是通道数会有所改变。重复第二步的内容,然后使用16个3316的卷积核,得到的结果为282816的特征图。
4、采用最大池化padding等于same,也不会改变图片的大小,通道数也不变,而后使用32个11256的卷积核,得到282832的特征图。
5、将得到的 282832、282816 、 282816、282832 在channel维度上进行合并,这里省略了 batch参数的说明,因为从头到尾,它是不变的,一张进去,一张出来。 最终得到了(batch,28, 28, 96)的输出,相比较AlexNet 和 VGG的 参数数量能够减少很多。这里就不详细计算参数的大小了,下面有代码和模型的summary ,可以对照着看。
代码
在这里插入代码片
总结
GoogleNet是一个特别优秀的神经网络框架,它的这样一种简参的方法,非常的耐人寻味。图片的特征往往只有一小块,图片可以进行局部归一化,图片不会因为去掉单数行行和偶数列而产生大的变化。然后Inception就出来了。 所有的Conv 都包含了 batchnormalization和ReLU激活函数,先熟悉代码,再来领悟思想是磨刀不误砍柴工的做法。
鄙人浅薄之语,若有不妥,请您指教。