
以上图为例,我们仔细看上图全连接层的结构,全连接层中的每一层是由许多神经元组成的(1 × 4096)的平铺结构,上图不明显,我们看下图:

注:上图和我们要做的下面运算无联系

从上图我们可以看出,我们用一个 3×3×5 的 filter 去卷积激活函数的输出,得到的结果就是一个 fully-connected layer 的一个神经元的输出,这个输出就是一个值。
因为我们有4096个神经元,
我们实际就是用一个 3×3×5×4096 的卷积层去卷积激活函数的输出。
以VGG-16再举个例子吧:在 VGG16 全连接层中,对 224×224×3 的输入,最后一层卷积可得输出为 7×7×512,如后层是一层含 4096 个神经元的 FC,则可用卷积核为 7×7×512×4096 的全局卷积来实现这一全连接运算过程。
不
你不懂
敲黑板了
麻烦后排吃东西的同学叫下前排玩游戏的同学去把第一排的同学吵醒
我要说重点了!!!!!!!!!!!
什么,听不懂
那我说人话
就是它把特征representation整合到一起,输出为一个值。
这样做,有一个什么好处?
就是大大减少特征位置对分类带来的影响。
从上图我们可以看出,猫在不同的位置,输出的 feature 值相同,但是位置不同。对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样,而这时全连接层 filter 的作用就相当于
于是我让filter去把这个喵找到,实际就是把 feature map 整合成一个值:这个值大,哦,有喵;这个值小,那就可能没喵,和这个喵在哪关系不大了有没有,鲁棒性有大大增强了有没有
喵喵喵
因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找 Pattern 的任务,比如 segmentation。
ok, 我们突然发现全连接层有两层 1×4096 fully-connected layer 平铺结构(有些网络结构有一层的,或者二层以上的)
泰勒公式都知道吧,意思就是用多项式函数去拟合光滑函数。我们这里的全连接层中一层的一个神经元就可以看成一个多项式,我们用许多神经元去拟合数据分布,但是只用一层 fully-connected layer 有时候没法解决非线性问题,而如果有两层或以上 fully-connected layer 就可以很好地解决非线性问题了。
说了这么多,我猜你应该懂的
听不懂?
那我换个方式给你讲
我们都知道,全连接层之前的作用是提取特征,全理解层的作用是分类,我们现在的任务是去区别一图片是不是猫:

哈哈哈,猫猫好可爱
我先撸一把先
撸完了,回来啦(嗯,怎么好像哪里不对)
当我们找到这些特征,神经元就被激活了(上图红色圆圈)
这细节特征又是怎么来的?
就是从前面的卷积层,下采样层来的
至此,关于全连接层的信息就简单介绍完了
原文链接:卷积神经网络(CNN)入门讲解关注专栏
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226339.html原文链接:https://javaforall.net
