原文链接:http://blog.csdn.net/qq_28132591/article/details/64124491
学习深度学习,有几篇论文大多数人都会读到。
其中一篇就是《Going deeper with convolutions》,google在这片论文中提到了一个inception模型(示意版,简单模式):
对于我这种基础知识不牢靠,学习时间非常短的人来说,对深度神经网络的理解还没到位,经常看论文一知半解,很多概念搞不清楚。
看到上面这个图,我就产生了一个疑问:
上图中的Filter Concatenation是怎么工作的,明明下面是三个不同大小的核卷积出来的,难道有个Filter Concatenation操作可以把不同大小的图混合在一起?
首先这是我的第一个误解,估计只有很少人会有:
就是在没有特殊说明的情况下卷积后的图像大小只和步长有关和卷积核大小无关,卷积核如果超出边缘会有相应策略填充:
如图 上面超出的部分可以用0或者1,8,15填充, 主要看具体策略。
回过头来看inception模型(改进版,最下面的MaxPool是输入,不属于模型内):
(S)前面的就是步长可以看到中间两层的步长都是1,所以混合的时候4条线路的结果出来的图大小是一样的,就没有所谓的Filter Concatenation需要混合不同大小的图这一说。
回到Filter Concatenation具体是怎么操作的,其实很简单 就是把图按深度链接起来,tensorflow代码如下:
concatenated_tensor = tf.concat(3, [branch1, branch2, branch3, branch4])
打个比方3个10x10x3的图按照深度连接起来就会变成一个10x10x9的图,所以Filter Concatenation就这么简单,把几个图连成一个而已