卷积层与全连接层的区别
卷积层、池化层、全连接层的概念:https://towardsdatascience.com/convolutional-neural-network-17fb77e76c05
关于卷积、全连接层的参数大小和计算量可以参考之前发的文章:深度学习中卷积&池化&全连接层及其参数量和计算量_猿代码_xiao的博客-CSDN博客
1.全连接层
(1)全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。
在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽。
以VGG-16为例,对224x224x3的输入,最后一层卷积可得输出为7x7x512,如后层是一层含4096个神经元的FC,则可用卷积核为7x7x512x4096的全局卷积来实现这一全连接运算过程,其中该卷积核参数如下:
“filter size = 7, padding = 0, stride = 1, D_in = 512, D_out = 4096”
经过此卷积操作后可得输出为1x1x4096。
如需再次叠加一个2048的FC,则可设定参数为“filter size = 1, padding = 0, stride = 1, D_in = 4096, D_out = 2048”的卷积层操作。
(2)目前由于全连接层参数冗余(仅全连接层参数就可占整个网络参数80%左右),近期一些性能优异的网络模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代FC来融合学到的深度特征,最后仍用softmax等损失函数作为网络目标函数来指导学习过程。需要指出的是,用GAP替代FC的网络通常有较好的预测性能。具体案例可参见在ECCV'16(视频)表象性格分析竞赛中获得冠军的做法:「冠军之道」Apparent Personality Analysis竞赛经验分享 - 知乎专栏https://zhuanlan.zhihu.com/p/23176872project:
Deep Bimodal Regression for Apparent Personality Analysishttps://link.zhihu.com/?target=http%3A//210.28.132.67/weixs/project/APA/APA.html
(3)在FC越来越不被看好的当下,近期的研究(In Defense of Fully Connected Layers in Visual Representation Transfer)发现,FC可在模型表示能力迁移过程中充当“防火墙”的作用。具体来讲,假设在ImageNet上预训练得到的模型为 ,则ImageNet可视为源域(迁移学习中的source domain)。微调(fine tuning)是深度学习领域最常用的迁移学习技术。针对微调,若目标域(target domain)中的图像与源域中图像差异巨大(如相比ImageNet,目标域图像不是物体为中心的图像,而是风景照,见下图),不含FC的网络微调后的结果要差于含FC的网络。因此FC可视作模型表示能力的“防火墙”,特别是在源域与目标域差异较大的情况下,FC可保持较大的模型capacity从而保证模型表示能力的迁移。(冗余的参数并不一无是处。)
(4)如果使用全卷积代替全连接层,就不需要固定输入图像的大小
2.全连接层的参数视角
全连接网络其实和卷积网络是等价的,全连接层就可以转化维卷积层,只不过这个卷积层比较特殊,称之为全卷积层,下面举一个简单的例子来说明全连接层如何转化为全卷积层。
由上图所示,我们假定要将一个2*2*1的feature map通过全连接层输出一个4维向量,图中的矩阵X便是这2*2*1的feature map,向量Y就是输出的4维向量,全连接层的做法便是将feature map由矩阵形式展开成向量形式,该向量便是全连接层的输入。
如上图所示,全连接层的运算就是矩阵运算,输出向量Y就是由权重矩阵W乘展开成向量的X',我们可以看到,对于每一个yi,都是由权重矩阵的第i行与X'对应元素相乘,这个相乘的过程和用权重矩阵的第i行所构成的卷积核去卷积X会产生一样的结果。
将2*2*1的feature map通过全连接层得到4维向量就相当于以全连接层中的权重矩阵中的四行向量所组成的4个卷积核去卷积2*2*1的feature map,此时的卷积核的大小就和feature map的大小一样,因此称之为全卷积,全卷积最终得到1*1*4的矩阵,这个4维向量效果是一样的。
卷积层与全连接层的区别相关推荐
- padding和卷积的区别_NiN:使用11卷积层替代全连接层
微信公号:ilulaoshi, 原文发表在我的个人网站:https://lulaoshi.info/machine-learning/convolutional/nin.html LeNet.Alex ...
- CNN中卷积层、池化层和全连接层分别有什么作用和区别?
卷积层:提取特征."不全连接,参数共享"的特点大大降低了网络参数,保证了网络的稀疏性,防止过拟合.之所以可以"参数共享",是因为样本存在局部相关的特性. 池化层 ...
- 卷积层和全连接层的区别_CNN卷积层、全连接层的参数量、计算量
我们以VGG-16为例,来探讨一下如何计算卷积层.全连接层的参数量.计算量.为了简单.直观地理解,以下讨论中我们都会忽略偏置项,实践中必须考虑偏置项. [卷积层的参数量] 什么是卷积层的参数? 卷积层 ...
- 卷积层和全连接层的区别_卷积神经网络中全连接层作用理解总结
前言 一般来说,卷积神经网络会有三种类型的隐藏层--卷积层.池化层.全连接层.卷积层和池化层比较好理解,主要很多教程也会解释. • 卷积层(Convolutional layer)主要是用一个采样器 ...
- pytorch神经网络之卷积层与全连接层参数的设置
当使用pytorch写网络结构的时候,本人发现在卷积层与第一个全连接层的全连接层的input_features不知道该写多少?一开始本人的做法是对着pytorch官网的公式推,但是总是算错. 后来发现 ...
- 深度学习 卷积层与全连接层权重参数个数的计算
1.卷积网络实例分析 构建卷积网络如下: from tensorflow.python.keras import datasets, models, layers class CNN(object): ...
- 『Transformer』为什么1*1卷积可以替代全连接层?
为什么1*1卷积可以替代全连接层? 起源 解决 参考 起源 事情起源于同学的一个疑惑,他在阅读Transformer论文时,看到作者在前馈神经网络部分写有这么一句话: Another way of d ...
- 卷积神经网络中全连接层、softmax与softmax loss理解
1.全连接层 假设全连接层前面连接的是一个卷积层,这个卷积层的num output是100,就是卷积之后输出一百张不同的特征图.每个特征的大小是4X4,那么在将这些特征输入给全连接层之前会将这些特征f ...
- 卷积神经网络---卷积层、激励层、池化层以及全连接层
文章目录 概述 卷积神经网络 局部连接+权值共享** 输入层 卷积层 激励层 池化层 全连接层 参考资料 概述 这两天在看论文,涉及到卷积神经网络的知识,之前一直对这块迷迷糊糊.看到了一篇博文写的很好 ...
最新文章
- linux php-fpm启动失败,linux运行php-fpm遇到问题
- zip(), dict(), itertools.repeat(), list(迭代器)
- 洛谷 - P1725 琪露诺(动态规划+单调队列优化)
- js引用最外部的js中的文本信息
- 查看线程CPU利用率
- js php c语言for循环,小蚂蚁学习C语言(8)——C语言for循环
- 赢在微点答案专区英语_少儿英语课堂 语法教学游戏 全集
- 想学数学建模???先来看会这几个MATLAB题吧!!!(一)
- 华为申请注册姚安娜商标
- docker 配置ssh
- 狼性文化遭质疑,那我们当个佛系程序员可好?
- 2021-08-04 Mysql联表查询
- Xcode - Plugins And Themes
- c语言程序设计武汉大学PDF,武汉大学C语言程序设计第5讲(2012级).ppt
- Typora下载及win10安装
- fastdb相关备忘
- visio2013都提示“正在配置请稍后”
- Oracle 字典表
- 选择游戏服务器需要什么配置?
- 公司监控显示无网络连接服务器,监控显示无网络视频什么原因
热门文章
- eclipse无法进入debug模式
- hough函数编写matlab,hough图像处理并非使用matlab自带函数(容易理解)
- 十年风雨,一个普通程序员的成长之路(九)一眼望到头,一眼望不到头
- 火炬之光中人物被遮挡效果在Ogre中的实现方法
- 06年78届奥斯卡11部得奖影片
- HTML学习之tr|td|th标签
- python中文分词器-jieba分词器详解及wordcloud词云生成
- mysql操作命令梳理(4)-grant授权和revoke回收权限
- sql的 join on用法
- kibana Unable to revive connection: http://elasticsearch:9200