CNN——全连接层 dense/FC

Posted

tags:

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

参考技术A 根据特征的组合进行分类

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

全连接层filter的作用就相当于

喵在哪我不管

我只要喵

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

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

这个值大

哦,有喵

这个值小

那就可能没喵

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

红色的神经元表示这个特征被找到了(激活了)

同一层的其他神经元,要么猫的特征不明显,要么没找到

当我们把这些找到的特征组合在一起,发现最符合要求的是猫

ok,我认为这是猫了

就是我们之前学的神经网络中的那种最普通的层,就是一排神经元。因为这一层是每一个单元都和前一层的每一个单元相连接,所以称之为“全连接”。 这里要指定的超参数,无非就是神经元的数量,以及激活函数。

卷积层(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的主要内容,如果未能解决你的问题,请参考以下文章

全连接层(FC)与全局平均池化层(GAP)

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

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

resnet 有全连接层吗?

TensorFlow2 一小时学会全连接层

Tensorflow 池化层(pooling)和全连接层(dense)