你真的懂了全连接层了吗?
随着我对CNN的认识的增加,有以下几个阶段的问题逐渐困惑着我。
1、全连接层到底是怎么计算的?
2、为什么全连接层有1层,两层,三层。。。?
3、全连接层与1x1卷积相同?与最后同尺寸的卷积核相同?
4、全连接层的作用到底是什么?
下面我们来一一探讨一下,有不同意见的欢迎讨论。
第一个问题
看下面的图(以前见过无数遍,可是没有认真思考过。。。可惜),假设我们最后的特征层是7x7x512的,我们的全连接层是1x1024的,那么实际上就相当于用1024个7x7x512的kernel_size去卷积这个feature_map。
第三个问题
突然就讲第三个问题,放心后面会讲第二个问题的。
知道了第一个问题,然后有人就会问,那全连接层不就是相当于最后一层特征层大小的卷积核去卷积自己吗?其实这里面涉及到一个参数共享的问题。
还是上面的那个例子,7x7x512的卷积核去卷积同样大的feature_map得到的是512个参数!!而这512个参数只是全连接层一个神经元的参数量!!!
那还有一种说法,全连接层其实就是1x1卷积?这种说法其实是错的。若是全连接层等于1x1卷积的话全连接层就不会有那么大的参数量了。1x1卷积是参数共享的,所以正确的说法是1024个1x1x512的卷积核才对。
第二个问题
我们知道全连接层,卷积层都是线性运算,所以他们后面都要加激活函数引进非线性。
但是只用一层全连接层+激活函数的话由于全连接层的参数量太大,没办法解决非线性的问题。(其实都是猜测而已,毕竟玄学炼丹)
所以多加几层。
第四个问题
全连接层的作用:
1、整合特征,用于之后的分类或者回归。
2、增加宽度会增加全连接层的非线性表达能力,增加神经元个数会增加分类准确度,同时也会增加参数量
看完觉得有收益的点个赞呗。