学习CNN系列一:原理篇
CNN的发展历程:
1962年,卷积神经网络的研究起源于Hubel和Wiesel研究毛脑皮层的发现局部互连网络可以有效降低反馈神经网络的复杂性。
1980年,CNN的第一个实现网络:Fukushima为解决模式识别问题基于神经元间的局部连通性和图像的层次组织转而提出的新识别机。
1998年,第一个多层人工神经网络——LeNet5,也是第一个正式的CNN模型(LeCun,用于手写数字分类)。共7层:2个卷积层,2个池化层,3个全连接层,利用BP算法训练参数。
(之后十年停滞,一因BP算法训练计算量极大,硬件计算能力不足。二因浅层机器学习算法(如SVM)开始发展。)
2012年,AlexNet在ImageNet大赛上夺冠,掀起CNN学习热潮。AlexNet整体架构与LeNet-5相似,但是更深。在卷积层使用ReLU函数作为非线性激活函数,在全连接层使用Dropout机制来减少过拟合。
2014年,GooleNet在ImageNet夺冠,达到22层。主要创新在于Inception(核心结构),是一种网中网的结构,即原来的节点也是一个网络。
2015年,ResNet将网络做到152层,引入残差,解决了网络层比较深时无法训练的问题。
2016年,商汤做到了1207层的CNNM,是截止目前在ImageNet上最深的深度学习网络。
CNN与普通网络的区别:
CNN可以避免前期对图像复杂的预处理,可以直接输入原始图像,因此在模式分类领域得到了广泛的应用。
CNN包含了一个由卷积层(Convolution Layer)和池化层(Pooling Layer)构成的特征提取器。在普通的神经网络中,一个神经元一般与全部邻接神经元连接,称之为全连接神经网络。而CNN的卷积层,一个神经元只与部分邻接神经元连接。在CNN的一个卷积层中,通常包含若干个特征图(feature map),每个特征图由一些矩形排列的神经元组成,同一特征图的神经元共享权值,即卷积核(Covolutional Kernel)。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中它进行学习并得到合理的权值。共享权值带来的直接好处是减少了网络各层之间的连接,同时又降低了过拟合的风险。池化可以看做是一个特殊的卷积过程。卷积核池化大大降低了模型的复杂度,减少了模型的参数。
CNN主要用于识别位移、缩放及其他形式扭曲不变的二维图像。一方面,CNN的特征检测层通过训练数据进行学习,这样避免了显式的特征抽取,而是隐式的从训练数据中学习。另一方面,同一特征图上的神经元权值相同,网络可以并行学习,这是卷积网络相比全连接层的优势。
CNN结构:
CNN基本结构通常包含三层:卷积层+池化层+全连接层。为防止过拟合,有的网络添加了Dropout层。
学习CNN系列一:原理篇的更多相关文章
- Nagios学习实践系列——基本安装篇
开篇介绍 最近由于工作需要,学习研究了一下Nagios的安装.配置.使用,关于Nagios的介绍,可以参考我上篇随笔Nagios学习实践系列——产品介绍篇 实验环境 操作系统:Red Hat Ente ...
- WebApi学习总结系列第三篇(Http)此篇持续更新...
越了解Http对WebApi开发就越有帮助,因为WebApi就是建立在Http基础之上的. 一.Http: 通过 <ASP.NET Web API 2 框架揭秘>一书中 了解到 什么叫We ...
- 学习CNN系列二:训练过程
卷积神经网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间精确的数学表达式,只要用已知的模式对卷积神经网络加以训练,网络就具有输入.输出之间映射的 ...
- WebApi学习总结系列第五篇(消息处理管道)
引言: ASP.NET WebAPI的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合.这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessage ...
- WebApi学习总结系列第四篇(路由系统)
由于工作的原因,断断续续终于看完了<ASP.NET Web API 2 框架揭秘>第二章关于WebApi的路由系统的知识. 路由系统是请求消息进入Asp.net WebApi的第一道屏障, ...
- java并发编程系列原理篇--JDK中的通信工具类Semaphore
前言 java多线程之间进行通信时,JDK主要提供了以下几种通信工具类.主要有Semaphore.CountDownLatch.CyclicBarrier.exchanger.Phaser这几个通讯类 ...
- Nagios学习实践系列——配置研究[监控当前服务器]
其实上篇Nagios学习实践系列——基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子.接下来,我们来学习研 ...
- Nagios学习实践系列
其实上篇Nagios学习实践系列--基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子.接下来,我们来学习研 ...
- OPEN(SAP) UI5 学习入门系列之一:扫盲与热身(下)
1 UI5代码结构 上一次我们一起用了20秒的时间完成一个UI5版的Hello World.应用打开后有一个按钮,按钮的文字是Hello World,点击这个按钮之后,按钮会慢慢的消失掉(Fade o ...
随机推荐
- aws创建ec2虚拟机
利用亚马逊AWS搭建个人服务器 https://www.jianshu.com/p/a045d4217175 https://segmentfault.com/a/1190000019201071?u ...
- linux学习(七)Shell编程中的变量
目录 shell编程的建立 shell的hello world! Shell的环境变量 使用和设置环境变量 Shell的系统变量 用户自定义变量 @(Shell编程) shell编程的建立 [root ...
- 27-限制容器的 Block IO
Block IO 是另一种可以限制容器使用的资源.Block IO 指的是磁盘的读写,docker 可通过设置权重.限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论. 注:目前 ...
- 如何判断Linux系统安装在VMware上?
如何判断当前Linux系统是否安装在VMware上面呢? 因为公司大部分服务器位于VMware上,也有小部分系统部署在物理机上面.今天老大要求统计一下VMware和物理机上服务器的数量,个人简单测试. ...
- 迁移文件是报错 django.db.utils.InternalError: (1054, "Unknown column 'name' in 'django_content_type'")
相信大家在做django迁移时有可能会遇到这样的错误- django.db.utils.InternalError: (1054, “Unknown column ‘name’ in ‘django_ ...
- Ubuntu18.04初始化
Ubuntu18.04初始化 更新源: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo gedit /etc/apt/sour ...
- mtu测试
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/jeromezmzx007/article ...
- 基于阿里云平台的使用python脚本发送短信
第一步:点击短信服务下的帮助文档 第二步:安装python的SDK:点击安装python sdk 第三步:直接通过python的pip工具安装即可,方便快捷: 第四步:点击红框进行测试: 第五步:测试 ...
- 第6次作业--static关键字、对象
题目1:编写一个类Computer,类中含有一个求n的阶乘的方法.将该类打包,并在另一包中的Java文件App.java中引入包,在主类中定义Computer类的对象,调用求n的阶乘的方法(n值由参数 ...
- mysql用户数据库只读权限提升全局权限
1.只读用户登录数据库 2.执行命令: mysql> unlock tables;mysql> set global read_only=0;