神经网络学习笔记(一):全连接层的作用是什么?

以下是我看过最好的全连接层的解释!
原文链接:卷积神经网络(CNN)入门讲解关注专栏

在这里插入图片描述
以上图为例,我们仔细看上图全连接层的结构,全连接层中的每一层是由许多神经元组成的(1 × 4096)的平铺结构,上图不明显,我们看下图:
在这里插入图片描述
注:上图和我们要做的下面运算无联系

并且不考虑激活函数和bias
当我第一次看到这个全连接层,我的第一个问题是:
它是怎么样把3x3x5的输出,转换成1x4096的形式
在这里插入图片描述
很简单,可以理解为在中间做了一个卷积。

在这里插入图片描述
从上图我们可以看出,我们用一个 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 映射到样本标记空间

什么,听不懂

那我说人话

就是它把特征representation整合到一起,输出为一个值。

这样做,有一个什么好处?

就是大大减少特征位置对分类带来的影响。

来,让我来举个简单的例子
在这里插入图片描述
这个例子可能过于简单了点
可是我懒得画了,大家将就着看吧

从上图我们可以看出,猫在不同的位置,输出的 feature 值相同,但是位置不同。对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样,而这时全连接层 filter 的作用就相当于

喵在哪我不管
我只要喵

于是我让filter去把这个喵找到,实际就是把 feature map 整合成一个值:这个值大,哦,有喵;这个值小,那就可能没喵,和这个喵在哪关系不大了有没有,鲁棒性有大大增强了有没有

喵喵喵

因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找 Pattern 的任务,比如 segmentation。

ok, 我们突然发现全连接层有两层 1×4096 fully-connected layer 平铺结构(有些网络结构有一层的,或者二层以上的)

好吧也不是突然发现,我只是想增加一点戏剧效果
在这里插入图片描述
但是大部分是两层以上呢,这是为啥子呢?

泰勒公式都知道吧,意思就是用多项式函数去拟合光滑函数。我们这里的全连接层中一层的一个神经元就可以看成一个多项式,我们用许多神经元去拟合数据分布,但是只用一层 fully-connected layer 有时候没法解决非线性问题,而如果有两层或以上 fully-connected layer 就可以很好地解决非线性问题了。

说了这么多,我猜你应该懂的

听不懂?

那我换个方式给你讲

我们都知道,全连接层之前的作用是提取特征,全理解层的作用是分类,我们现在的任务是去区别一图片是不是猫:

在这里插入图片描述
哈哈哈,猫猫好可爱

我先撸一把先

撸完了,回来啦(嗯,怎么好像哪里不对)

假设这个神经网络模型已经训练完了,全连接层已经知道:
在这里插入图片描述
当我们得到以上特征,我就可以判断这个东东是猫了。因为全连接层的作用主要就是实现分类(Classification),从下图,我们可以看出:
在这里插入图片描述
红色的神经元表示这个特征被找到了(激活了),而同一层的其他神经元,要么猫的特征不明显,要么没找到。当我们把这些找到的特征组合在一起,发现最符合要求的是猫,ok,我认为这是猫了。

那我们现在往前走一层:那们现在要对子特征分类,也就是对猫头,猫尾巴,猫腿等进行分类。比如我们现在要把猫头找出来:
在这里插入图片描述
猫头有这么些个特征,于是我们下一步的任务,就是把猫头的这么些子特征找到,比如眼睛啊,耳朵啊
在这里插入图片描述
道理和区别猫一样

当我们找到这些特征,神经元就被激活了(上图红色圆圈)

这细节特征又是怎么来的?

就是从前面的卷积层,下采样层来的

至此,关于全连接层的信息就简单介绍完了

原文链接:卷积神经网络(CNN)入门讲解关注专栏

  • 206
    点赞
  • 675
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
dense层和全连接层是指在神经网络中的一种层次结构。在TensorFlow中,可以使用tf.layers.dense函数来创建全连接层全连接层有两个主要的作用:一是将前一层的输出变为一维向量,这个过程称为Flatten层;二是将这个一维向量与权重相乘并加上偏置,然后通过激活函数进行非线性变换,得到最终的输出结果。全连接层通常用于将卷积层的输出转换成与任务相关的特征表示,最后用于分类、回归或其他预测任务。在一个典型的神经网络中,通常会有多个全连接层,每个全连接层的输出会作为下一层的输入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [tensorflow 学习笔记(八)- 池化层(pooling)和全连接层(dense)](https://blog.csdn.net/m0_37167788/article/details/79072681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [全连接层、卷积层](https://blog.csdn.net/weixin_41624572/article/details/103006032)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值