全连接层

**全连接层存在的问题:**占用参数空间,带来过拟合问题
因为参数比较多,所以很容易过拟合,收敛特别快,所以一般要在全连接层做大量的正则化,不要在这一层就把所有的数据都学到了
卷积层后的第一个全连接层的参数个数计算:
C×H×W×MC\times H\times W\times MC×H×W×M
C:outputchannelH:heightoffeaturemapW:widthoffeaturemapM:全连接层的输出的神经元的个数C:output\,channel \\H:height\, of\, feature \,map\\W:width\, of\, feature \,map\\M:全连接层的输出的神经元的个数C:outputchannelH:heightoffeaturemapW:widthoffeaturemapM:全连接层的输出的神经元的个数


eg: LeNet的卷积层后的第一个全连接层的参数个数计算:
1655*120=48k

AlexNet:
256554096=26M

VGG:
512
774096=102M

卷积层需要较少的参数:

Cin×Cout×k2C_{in}\times C_{out}\times k^{2}Cin​×Cout​×k2
Cin:intputchannelsCout:outputchannelsk:kernelsizeC_{in}: intput\,channels\\C_{out}:output\,channels\\k:kernel\,sizeCin​:intputchannelsCout​:outputchannelsk:kernelsize

input channel决定了卷积核的channel个数,output channel决定了卷积核的个数
而单个channel的卷积核的h=w=k,
所以卷积层需要的参数 = Cin×Cout×k2C_{in}\times C_{out}\times k^{2}Cin​×Cout​×k2

NiN

就是完全不用全连接层



一个卷积层后跟两个全连接层:

  • 步幅为1,no padding, 输出形状跟卷积层输出一样
  • 起到全连接层的作用

NiN架构:

  • 无全连接层
  • 交替使用NiN块和步幅为2的最大池化层
    逐步减小高宽和增大通道数
  • 最后使用全局平均池化层得到输出(全局平均池化层的大小等于feature map的大小)
    其输入通道数是类别数

Global Average Pooling

Global Average Pooling主要是为了解决全连接层参数过多的问题,早起对于分类问题,最后一个卷积层的feature map通常和全连接层链接,最后通过softmax进行分类。全连接层带来的问题就是参数空间过大,容易过拟合(因为它的参数量很大啊,联想一下拟合离散点的函数,多项式的次数越高则经过的点越多越准,但是容易过拟合)。早期的AlexNex采用了Dropout来减轻过拟合,提高网络的泛化能力,但依旧无法解决参数过多的问题。

而global average pooling的做法是将全连接层去掉,在最后一层,将卷积层(即卷积核的个数,而不是卷积核的channel数!!!)设为与类别数目一致,然后全局pooling, 从而直接输出属于各个类的结果,再接上softmax来转化为属于各个类的概率。

使用全局平均pooling代替全连接层,使得最后一个多层感知卷积层获得的每一个特征图能够对应于一个输出类别,优点如下:

  • 全局平均池化更原生地支持于卷积结构,通过加强特征映射与相应分(种)类的对应关系,特征映射可以很容易地解释为分类映射。
  • 全局平均池化一层没有需要优化的参数,减少大量的训练参数有效避免过拟合
  • 全局平均池化汇总(求和)空间信息,因此其对空间变换是健壮的

NIN网络是inception的前身,总结来说就是在卷积层后面增加1 ∗ 1 1*11∗1卷积核,然后将全连接层换成平均全局池化层(Global Average Pooling),可以减少大量的训练参数有效避免过拟合
参考博客

如上图所示,黑色虚线框内为11的卷积来代替全连接层;红色虚线框内为全连接层的过程
而左边只需要:3 ×\times× 2个参数
右边需要:27 ×\times× 2个参数
上图:其实左边的1
1的卷积来代替全连接层,就是将27个球球(每一个球球就是左边图的一个小方块)的某些球球的权重(权重复用)搞成一样的,然后求27个球球加权求和取平均 == 1*1的卷积后进行GlobalAvgPool
最后再通过softmax转为概率,上面图中为2分类
上图中只是举了一个全连接层的概念,当然也可以弄两个全连接层

2次1*1的卷积就相当于两个全连接层

1*1卷积的作用

  • 改变通道数
  • 代替全连接层,减少参数数量,避免过拟合

网络中的网络NiN详解+1*1卷积的作用相关推荐

  1. 数据包在网络中的传输过程详解

    我们当今使用电子设备都离不开网络,通过网络我们可以聊天.玩游戏.看电影都操作. 网络的本质就是交换数据. 本文我们就来看下数据是如何在网络中传输的. 计算机网络模型 现在有两种计算机网络模型,分别为O ...

  2. JScript中的条件注释详解(转载自网络)

    JScript中的条件注释详解-转载 这篇文章主要介绍了JScript中的条件注释详解,本文讲解了@cc_on.@if.@set.@_win32.@_win16.@_mac等条件注释语句及可用于条件编 ...

  3. Pytorch 网络中的网络 NiN

    Pytorch 网络中的网络 NiN 0. 环境介绍 环境使用 Kaggle 里免费建立的 Notebook 教程使用李沐老师的 动手学深度学习 网站和 视频讲解 小技巧:当遇到函数看不懂的时候可以按 ...

  4. Windows 网络服务架构系列课程详解(六) ---利用NLB群集实现WEB服务器的可靠性...

    Windows 网络服务架构系列课程详解(六) -----利用NLB群集实现WEB服务器的可靠性   实验背景: 在大型网络环境中存在这样一种情景,公司内部的FTP服务器出现故障或脱机了,而且不能快速 ...

  5. 【GCN】图卷积网络(GCN)入门详解

    机器学习算法与自然语言处理出品 @公众号原创专栏作者 Don.hub 单位 | 京东算法工程师 学校 | 帝国理工大学 图卷积网络(GCN)入门详解 什么是GCN GCN 概述 模型定义 数学推导 G ...

  6. 初始化模型参数 python_pytorch 网络参数 weight bias 初始化详解_python_脚本之家

    权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生. 在pytorch的使用过程中有几种权重初始化的方法供大家参考. 注意:第一种方法不推荐.尽量使用后两种方法. # ...

  7. Siamese网络(孪生神经网络)详解

    SiameseFC Siamese网络(孪生神经网络) 本文参考文章: Siamese背景 Siamese网络解决的问题 要解决什么问题? 用了什么方法解决? 应用的场景: Siamese的创新 Si ...

  8. Windows 网络服务架构系列课程详解(一) ----DHCP服务器的搭建与配置

    Windows 网络服务架构系列课程详解(一) ---------DHCP服务器的搭建与配置   实验背景: 企业网络环境中在没有配置DHCP服务器时,经常会遇到这样的情况,用户不懂怎么去配置IP地址 ...

  9. TCP/IP网络协议栈:ARP协议详解

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

最新文章

  1. 有奖评选 | 2020年的AI技术公开课,你想听到哪些干货?
  2. python多久能学会爬虫-上海多久可以学会python
  3. 全球与中国光电通信芯片市场数据专项调研及竞争格局分析报告2022-2028年版
  4. 【Notes8】Linux开发环境,Linux命令,vi命令,/正则,Hash,iNode,文件查找与读取,Linux开机自启动
  5. centos7 xampp启动mysql数据库_mysql主从配置,用win xampp和centos7环境下测试
  6. F5 在 Gartner 魔力象限中被评为 Web 应用防火墙领导者
  7. 阴阳师服务器维修拖延,阴阳师12月11日更新维护公告 阴阳师百闻牌联动开启
  8. asp提交数据500服务器错误信息,windows2003运行ASP发送HTTP 500 - 内部服务器错误怎么处理啊?...
  9. oracle中decode函数,行转列
  10. python3.5和python3.6关于json模块的区别
  11. Webpack+Babel+React环境搭建
  12. 使用WebService的方式调用部署在服务器的Wcf服务
  13. python web环境傻瓜搭建_工具赋能Python环境搭建
  14. matlab编写优化目标函数,基于MATLAB的二级齿轮减速器的优化设计
  15. J-Link驱动下载(含历史版本)
  16. vue将页面导出pdf,vue导出pdf
  17. 测试开发是什么?什么是测试开发工程师?
  18. 如何准确获取地点位置的经纬度?
  19. 当exe文件运行时,汉字出现乱码
  20. 微信开发者工具网页h5本地开发,解决微信公众号绑定域名,本地无法调用微信api问题

热门文章

  1. 金融信息安全实训--网站漏洞利用
  2. Java 用Ajax的方法
  3. python爬虫——爬取周杰伦歌词
  4. 此生若得安稳,谁愿颠沛流离!
  5. 2019最佳弹窗/弹出框设计20例【附教程】
  6. 新手入门,webpack入门详细教程
  7. 安信可TB-02蓝牙模块AT透传固件的问题和解决(AT无反应)
  8. matlab的ln函数表示,r软件中ln函数 r语言ln函数
  9. 樹莓派如何使用藍牙音箱
  10. Twilio短信发送 twilio.base.exceptions.TwilioRestException:?[49mhttps://www.twilio.com/docs/errors/21408