深度学习笔记——全连接层

1.概观

卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图。因为用到了所有的局部特征,所以叫全连接。

全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。

2.全连接层的理解

——————————以下为个人看法,如果有错,欢迎锤正!——————————

假设我们现在的任务是去区别一图片是不是猫、
在这里插入图片描述
假设这个神经网络模型已经训练到此阶段,如图:
在这里插入图片描述
在这里插入图片描述

经过卷积,池化,激活等层,现已提取了上图所示的局部特征,且已到达了第一层全连接层并激活符合特征存在的部分神经元,该连接层是一维的,而这个层的作用就是根据提取到的局部特征进行相关操作进行组合并输出到第二个全连接层的某个神经元处,如上图,经过组合我们可以知道这是个喵头。

那我们现在往后走一层,到第二层全连接层,假设猫的身体其他部位特征也都被上述类似的操作提取和组合出来,得

在这里插入图片描述

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

此时,再将上图中的特征进行组合并输出到输出层,经过softmax函数进行分类,得出结论,这是只猫。

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

3.全连接层和其他层,全连接层与全连接层之间的换算

在这里插入图片描述
以上图为例,我们仔细看上图全连接层的结构,全连接层中的每一层是由许多神经元组成的(1x 4096)的平铺结构,上图不明显,我们看下图
在这里插入图片描述
当我第一次看到这个全连接层,我的第一个问题是

它是怎么样把3x3x5的输出,转换成1x4096的形式

在这里插入图片描述
很简单,可以理解为在中间做了一个卷积

在这里插入图片描述

从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值

因为我们有4096个神经元

我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出

这一步卷积一个非常重要的作用,就是把分布式特征representation映射到样本标记空间

就是它把特征representation整合到一起,输出为一个值。这样做,有一个什么好处?

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

来,让我来举个简单的例子
在这里插入图片描述

这个例子可能过于简单了点

可是我懒得画了,大家将就着看吧

从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同

对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样

而这时全连接层filter的作用就相当于,喵在哪我不管,我只要喵

于是我让filter去把这个喵找到

实际就是把feature map 整合成一个值

这个值大

哦,有喵

这个值小

那就可能没喵

和这个喵在哪关系不大了有没有

鲁棒性有大大增强了有没有

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

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

在这里插入图片描述

但是大部分是两层以上呢

这是为啥子呢

泰勒公式都知道吧

意思就是用多项式函数去拟合光滑函数

我们这里的全连接层中一层的一个神经元就可以看成一个多项式

我们用许多神经元去拟合数据分布

但是只用一层fully connected layer 有时候没法解决非线性问题

而如果有两层或以上fully connected layer就可以很好地解决非线性问题了

4.对含有全连接层的网络输入数据大小固定问题的理解

固定大小是说送入网络训练的每一个数据大小需要一样, 除了何凯明团队提出的 Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
利用空间金字塔池化将任意大小的图像输出成固定的输出,然后输出到后面的全连接层解决了固定大小的问题。但是固定大小不代表网络输入必须是这个大小,比如说现在输入图像大小为227x227,那么你所有图像都必须为227x227, 不能出现不一样的, 但是你也可以将图像都改为224x224(没有预训练模型的情况下)。
  **解释:**含有全连接层的网络输入数据的大小应该是固定的,这是因为全连接层和前面一层的连接的参数数量需要事先确定,不像卷积核的参数个数就是卷积核大小,前层的图像大小不管怎么变化,卷积核的参数数量也不会改变,但全连接的参数是随前层大小的变化而变的,如果输入图片大小不一样,那么全连接层之前的feature map也不一样,那全连接层的参数数量就不能确定, 所以必须实现固定输入图像的大小。
  另外全连接的实现可以通过卷积的方式进行, 这里有两种情况:

1、前层为卷积层或池化层(就是全连接层的输入是feature_map,而不是单个值):
比如前层输出为512x5x5的feature map,全连接层有500个神经元,那这可以看做是用5x5的卷积核对前层的这些feature map进行卷积,最后输出500x1x1的feature map;

2、前层是全连接层
若前层有500个神经元,当前层有100个,那可以看做前层有500x1x1个feature map,然后用1x1的卷积核对这些feature map进行卷积,则得到100x1x1个feature map。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 jQuery 的事件,我可以和你分享一些学习笔记。 1. 绑定事件 在 jQuery 中,我们可以通过以下方式来绑定事件: ``` $(selector).event(function(){ // 事件处理程序 }) ``` 其中,`selector` 表示要绑定事件的元素,`event` 表示要绑定的事件类型,比如 `click`、`mouseover` 等等。事件处理程序则是在事件触发时要执行的代码块。 2. 多个事件绑定 我们可以通过 `on()` 方法来同时绑定多个事件: ``` $(selector).on({ event1: function(){ // 事件处理程序1 }, event2: function(){ // 事件处理程序2 } }) ``` 这样,当 `event1` 或 `event2` 中任意一个事件触发时,对应的处理程序都会被执行。 3. 解除事件 如果需要解除某个元素的事件处理程序,可以使用 `off()` 方法: ``` $(selector).off(event); ``` 其中,`event` 表示要解除的事件类型。如果不指定事件类型,则会解除该元素上所有的事件处理程序。 4. 事件委托 在 jQuery 中,我们可以使用事件委托来提高性能。事件委托是指将事件绑定到父元素上,而不是绑定到子元素上,然后通过事件冒泡来判断是哪个子元素触发了该事件。这样,当子元素数量较多时,只需要绑定一次事件,就可以监听到所有子元素的事件。 ``` $(selector).on(event, childSelector, function(){ // 事件处理程序 }) ``` 其中,`selector` 表示父元素,`event` 表示要绑定的事件类型,`childSelector` 表示要委托的子元素的选择器,事件处理程序则是在子元素触发事件时要执行的代码块。 以上是 jQuery 中事件的一些基本操作,希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值