神经网络的全连接层

Posted

tags:

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

参考技术A 全连接层(fully connected layers,FC)在整个神经网络中起到“分类器”的作用。

如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层将学到的“分布式特征表示”映射到“样本标记空间”。

在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为h*w的全局卷积,h和w分别为前层卷积结果的高和宽。

由于全连接层的参数冗余(仅全连接层参数就可占整个网络参数80%左右),有些性能优异的网络模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代全连接层,来融合学到的深度特征,最后仍用softmax等损失函数作为网络目标函数来指导学习过程。

卷积层(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。

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

以上是关于神经网络的全连接层的主要内容,如果未能解决你的问题,请参考以下文章

神经网络全连接层详解

神经网络之全连接层(线性层)

理解神经网络卷积层、全连接层

CNN——全连接层 dense/FC

python实现卷积神经网络全连接层实现

卷积神经网络的 卷积层、激活层、池化层、全连接层