全连接层的作用是什么?(nn.Linear())

Posted 马鹏森

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全连接层的作用是什么?(nn.Linear())相关的知识,希望对你有一定的参考价值。

回答一:

概述

全连接层 Fully Connected Layer 一般位于整个卷积神经网络的最后,负责将卷积输出的二维特征图转化成一维的一个向量,由此实现了端到端的学习过程(即:输入一张图像或一段语音,输出一个向量或信息)。全连接层的每一个结点都与上一层的所有结点相连因而称之为全连接层。由于其全相连的特性,一般全连接层的参数也是最多的。

主要作用

全连接层的主要作用就是将前层(卷积、池化等层)计算得到的特征空间映射样本标记空间。简单的说就是将特征表示整合成一个值,其优点在于减少特征位置对于分类结果的影响,提高了整个网络的鲁棒性。

在知乎上有这样一个回答说的很形象。

假设你是一只小蚂蚁,你的任务是找小面包。你的视野还比较窄,只能看到很小一片区域。当你找到一片小面包之后,你不知道你找到的是不是全部的小面包,所以你们全部的蚂蚁开了个会,把所有的小面包都拿出来分享了。全连接层就是这个蚂蚁大会~如果提前告诉你全世界就只有一块小面包,你找到之后也就掌握了全部的信息,这种情况下也就没必要引入fc层了
作者:田star 链接:https://www.zhihu.com/question/41037974/answer/150552142

实现方式

全连接层的计算方式

如上图所示,一个网络在全连接层之前,生成了5@3×3的特征映射,我们需要只需要使用五个卷积核去和激活函数的输出进行卷积运算,在将五个输出的值相加即可得到一个全连接层的输出值。如果结果是N维的向量,则需要N×5个3×3的卷积核。再加上求和运算对应的权值,参数的数量是非常可观的,由此一般只在网络的之后使用全连接层。

回答二:

因为卷积层的作用只是提取特征,但是很多物体可能都有同一类特征,比如猫、狗、鸟都有眼睛。如果只用局部特征的话不足与确定具体类别。

这时就需要使用组合特征来判别了。全连接就是组合这些特征来最终确定是哪一个分类,所以全连接就是组合特征和分类器功能

回答三:

(1)卷积神经网络为什么用卷积而不用全连接的原因之一就是:全链接计算量太大。

(2)卷积神经网络经过pooling之后,尺寸已经大大减少了,偶尔用一两层全连接,计算量可以接受。

(3)其实如果计算能力允许,你用每层都是全连接的,也许比卷积神经网络效果更好呢(我猜的,未必是真的),不过现实中不太可能。


初识全连接层 - Su'S Blog - SuZhengpeng.COM

卷积层(FCN)替换全连接层(FC)的意义

1.卷积层替换全连接层的可行性:

卷积层是局部连接,它的特点是稀疏连接和权值共享;而全连接层使用了图像的全局信息,每个神经元都与上一层的所有神经元相连接。
“最大的局部”“全局”这两个概念其实是等价的,因此卷积层替换全连接层是可行的。

2.全连接层到卷积层的转换:

下图显示了AlexNet卷积化的过程,假设执行特征提取的卷积层的最后一层输出为256×7×7,得到后面的4096个神经元;那么改为用7×7的卷积核对该256×7×7的输出特征图做卷积,也可以获得4096×1×1的向量。由于卷积核大小和输入的特征图尺寸相同,就保证了转换后的卷积层的运算结果和之前的全连接层是一样的。

假设图像尺寸大一些,执行特征提取的卷积层的最后一层输出为256×12×12,经过7×7卷积核的卷积,得到了4096×6×6的向量,此时6×6个神经元就有了位置信息。
在这里插入图片描述

3.全连接层转换为卷积层的原因:

用卷积层替换全连接层可以让卷积网络在一张更大的输入图片上滑动,得到每个区域的输出,这样就突破了此前对于图像输入尺寸的限制。

对于传统的 CNN(即包含全连接层的网络结构),一个确定的网络其输入图像的大小是固定的,比如 CaffeNet 的输入必须是 227×227,对于更大的图像在检测时就需要裁剪出很多 227×227 的小图像分别送入 CNN 网络中,使得检测任务十分耗时。固定大小是指送入网络训练的每一个数据大小需要一样,可以都是 227×227,也可以都是 224×224,但这个尺寸值必须要统一。这样要求的原因是全连接层与前一层连接时参数数量需要预先设定好。而网络需要输入固定大小图像的主要原因就是有全连接层。

当把全连接层替换成了卷积层后就可以不限制输入图像的大小,一次性输入网络即可获得一张图片所有位置的检测目标概率,形成一幅 heatmap。

这是因为卷积操作与全连接不同,卷积核的参数数量,也就是卷积核的大小,它与前一层的特征图尺寸是没有关系的;但是全连接层的参数是随着前一层特征图的大小变化而变化的,当输入图像大小不同,全连接层输入的特征图大小也不一样,那么全连接层的参数数量就不能确定,所以采用全连接层的网络必须固定输入图像的大小,而替换为卷积层后就实现了对输入图像尺寸限制的突破。

以上是关于全连接层的作用是什么?(nn.Linear())的主要内容,如果未能解决你的问题,请参考以下文章

resnet18全连接层改成卷积层

pytorch nn.Linear(对输入数据做线性变换:y=Ax+b)(全连接层?)

pytorch nn.Linear()详解

torch.nn.Linear()函数讲解

神经网络的全连接层

关于对PyTorch中nn.Linear的官方API文档解读