之前看过这个问题,但是后来又忘记了,所以写一下加深印象
什么是全连接?
在之前的一些网络中,经常用全连接层做收尾,一般放在卷积和池化的后面
比如说最后生成的是 的特征图,需要得到10个数值的输出
那么全连接就是先将这个特征图reshape成一维的(如
),在用
个参数来生成最后的10个数值,类似下图:
什么是卷积?
这个嘛,就不谈了
卷积和全连接的关系
-
在输入的大小正好符合全连接层接收的大小的时候,其实卷积和全连接是差不多的。
继续用上面的例子,全连接可以看成是10个 大小的卷积核,结果也是一样的 -
在卷积核size小于全连接的时候,卷积可以看成是全连接的子集,比如 的卷积核,把 的和全连接相同的卷积核中,把比 多出来的部分都置为0,就是 的卷积核
卷积和全连接的比较
先假设一个会对图片进行 缩小的网络,在最后的特征图的后面有 的卷积层和一个能接受 的全连接层。
假定在处理 大小的图片时backbone的卷积需要时间为 ,处理 池化时需要的时间是
现在给网络一个 大小的输入:
全连接 | 卷积 | 结论 | |
---|---|---|---|
输入处理 | 将图片按照32的步长分成36张图片输入(步长是有网络的最后的特征图的缩放决定的) | 直接输入 | 卷积更简单,不需要切分图片就能直接得到 的输出 |
第一个卷积和池化的前向传播耗时 | ,卷积更省时 |
所以,卷积对于全连接,不仅不用固定输入的大小,而且速度更快,所以现在都用卷积代替全连接。