斯坦福大学深度学习公开课cs231n学习笔记(10)卷积神经网络
前记:20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时,发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于避免了对图像复杂的前期预处理操作,可以直接输入原始图像,因而得到了更为广泛的应用。
卷积神经网络(CNNs / ConvNets):
卷积神经网络和之前学的普通神经网络很相似:它们都是由神经元组成和具有学习能力的权重和偏差。每个神经元给与输入数据,进行内积运算及激活函数运算等;整个网络同样有一个可导的评分函数,输入是原始的图像像素,输出是不同类别的评分;在最后一层(全连接层),有一个损失函数(比如 SVM 或 Softmax),之前介绍的神经网络的各种技巧仍旧适用于卷积神经网络。
所不同的是,卷积神经网络的输入数据是图像,所以它具备一些特有的性质,使得前向传播函数的实现更加高效,并且大幅度降低神经网络中的参数数量。
卷积神经网络结构:
(3)输出表达和神经元的多维排列。卷积后的输出若用图2的排列方式则丢失了平面结构信息,卷积神经输入是图像,所以可以采用矩阵方式排列,见下图3;图像可以是彩色三维图像,所以与常规神经网络不同,卷积神经网络的各层神经元也可以3维排列:宽度、高度和深度(这里的深度是指激活数据的第三个维度,而不是网络的深度,网络的深度是指网络的层数),见下图4。
图5.
对同一图片,经过两个(红色、绿色)不同的filters扫描后,得到不同特点的Feature Maps。此时卷积层的输出是和输入一样多depths的长方。如下图6所示,当增加一个filter(紫色)后,就新得到一个Feature Map。 将不同filters卷积得到的Feature Maps按顺序堆叠后,就得到了一个卷积层的最终输出。
构建网络的层:
- 输入[32x32x3]大小的图像原始像素值,其中:32*32为图像宽高,3个颜色通道。
- 卷积层中,神经元与输入层中的一个局部区域相连,每个神经元都计算与输入层相连的区域与权重的内积。卷积层计算出所有神经元的输出。如果使用12个滤波器,得到的输出数据维度为[32x32x12]。
- ReLU层将每个元素送入激活函数,比如将作为激活函数。该层不改变数据尺寸,还是[32x32x12]。
- 汇聚层在在空间维度(宽度和高度)上进行降采样操作,数据尺寸变为[16x16x12]。
- 全连接层计算分类评分,数据尺寸变为[1x1x10],其中10表示CIFAR-10中10个类别的分类评分值。
经过逐层操作,将图像从原始像素值变换成最终的分类评分值。上面各层中并非都含有参数,有的含有参数,有的没有。
(一)卷积层
(2)在滑动滤波器的时候,必须指定步长。步长为1表示滤波器每次移动1个像素,步长为2则滤波器滑动时每次移动2个像素。这会让输出数据体在空间上变小。
(3)零填充。零填充可以控制输出数据体的空间尺寸(保持输入数据体和输出有相同的尺寸)。
(二)汇聚层
- 接受尺寸为:的输入数据;
- 有两个超参数:空间大小、步长;
- 输出数据尺寸为:,其中:
- 对输入数据进行固定函数计算,所以该层没有引入参数;
- 在汇聚层中一般不使用零填充。
图9.
(三)归一化层
(四)全连接层
卷积神经网络的结构:
ps:几个小滤波器卷积层的组合比一个大滤波器卷积层效果要好。几个小滤波器卷积层的组合方式可以从输入数据中提取出更多,更强的特征,同事使用更少的参数;缺点是在进行反向传播时,中间的卷积层可能会占用更多的内存。
层的尺寸设置规律:
(1)输入层尺寸应能被2多次整除,即2的n次幂,例如:32(CIFAR-10),64,96(STL-10),224(ImageNet),384和512。
(2)卷积层应使用小尺寸滤波器(比如3x3,最多5x5),步长S=1。还有就是对输入数据进行零填充,这样卷积层就不会改变输入数据在的尺寸。如果必须使用更大的滤波器尺寸(比如7x7等),通常只用面对原始图像的第一个卷积层上。
(3)汇聚层对输入数据进行空间上的降采样。最常用的设置是2x2感受野(F=2)的最大值汇聚,步长为2(S=2)。不常用的设置有使用3x3的感受野,步长为2。最大值汇聚的感受野尺寸很少超过3,因为尺寸过大会使得汇聚操作过于激烈,造成数据信息丢失严重,从而导致算法性能变差。
卷积神经网络领域中比较有名的几种结构:
- LeNet: 第一个成功的卷积神经网络应用,最著名是被应用在识别数字和邮政编码等的LeNet结构。
- AlexNet:AlexNet卷积神经网络在计算机视觉领域中受到欢迎,2012年AlexNet在ImageNet ILSVRC 竞赛中夺冠,并且性能远超第二名。其结构和LeNet类似,但是比之更深,更大,并使用层叠的卷积层来获取特征(之前通常只用一个卷积层,在其后跟着一个汇聚层)。
- ZF Net:它在ILSVRC 2013比赛中夺冠,它被称为 ZFNet。它对AlexNet的改良操作是:增加中间卷积层的尺寸,让第一层的步长和滤波器尺寸更小。
- GoogLeNet:它由谷歌的Szeged等实现,在ILSVRC 2014夺冠。它主要的贡献是实现了一个奠基模块,显著地减少了网络中参数的数量(AlexNet有60M,该网络只有4M)。
- VGGNet:ILSVRC 2014的第二名是Karen Simonyan和 Andrew Zisserman实现的VGGNet,它展示出网络深度是算法优良性能的关键。他们最好的网络包含16个卷积层/全连接层,从头到尾全部使用的是3x3的卷积和2x2的汇聚。
- ResNet:残差网络(Residual Network)是ILSVRC2015的胜利者,作者何恺明等人(视频,PPT)。它使用了特殊的跳跃链接,大量使用了批量归一化(batch normalization)。何开明等后来对原始结构做过一些优化,参看论文Identity Mappings in Deep Residual Networks。
后记:感觉CNN这块知识点挺多的,cs231n也只是尽量讲解了重要的概念点,后面再认真看下参考6。
参考:
http://cs231n.github.io/convolutional-networks/
https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit
《技术向:一文读懂卷积神经网络CNN》
《机器视角:长文揭秘图像处理和卷积神经网络架构》
《YJango的卷积神经网络——介绍》
《解析卷积神经网络——深度学习实践手册》
斯坦福大学深度学习公开课cs231n学习笔记(10)卷积神经网络相关推荐
- 斯坦福大学 iOS 开发公开课总结
斯坦福大学 iOS 开发公开课总结 前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPhone ...
- ios专题 - 斯坦福大学iOS开发公开课总结
转自:http://blog.devtang.com/blog/2012/02/05/mvc-in-ios-develop/ 前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的" ...
- 斯坦福大学iOS开发公开课总结
前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的"iphone开发公开课"了.此公开课在以前叫做<iphone开发教程>,今年由于平板电脑的流行,所以也 ...
- 《TensorFlow深度学习》学习笔记--10.卷积神经网络--1.LeNet-5实战
1. LeNet-5 实战 1. 导入相关的包 import tensorflow as tf from tensorflow.keras import Sequential, layers, los ...
- 转:深度学习课程及深度学习公开课资源整理
http://www.52nlp.cn/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E8%AF%BE%E7%A8%8B%E6%B7%B1%E5%BA%A6%E5%AD%A ...
- 学习:深度学习公开课
[转] http://www.leiphone.com/news/201701/0milWCyQO4ZbBvuW.html 导语:入门机器学习不知道从哪着手?看这篇就够了. 在当下的机器学习热潮,人才 ...
- 复旦大学python教学视频_B站资源推荐:复旦大学机器学习、深度学习公开课,附PDF课件下载...
点击"机器学习算法与Python实战","置顶"公众号 重磅干货,第一时间送达 推荐语 向大家推荐两个复旦大学的公开课,分为机器学习篇和深度学习篇.这套课程在中 ...
- Deep Learning 9_深度学习UFLDL教程:linear decoder_exercise(斯坦福大学深度学习教程)...
前言 实验内容:Exercise:Learning color features with Sparse Autoencoders.即:利用线性解码器,从100000张8*8的RGB图像块中提取颜色特 ...
- 谷歌深度学习公开课任务 5: Word2VecCBOW
为什么80%的码农都做不了架构师?>>> 本文由码农场同步,最新版本请查看原文:http://www.hankcs.com/ml/cbow-word2vec.html 课上讲的 ...
最新文章
- 初识JavaScript(二)
- 名为 cursor_jinserted 的游标不存在_质量工程师必须了解的测量常识,你不知道怎么行...
- PWN-PRACTICE-BUUCTF-13
- RocketMQ学习
- Log4j2使用总结
- Python爬虫入门教程 15-100 石家庄政民互动数据爬取
- servletcheckbox选中和未选中判断_【微课堂】2020【1期】如何判断牛市启动,春季布局思路! 2020.1.4...
- 单片机定时器之改良版:时间轮定时器
- Myeclipse性能优化
- python曲线和直线的交点_求直线与分段线性曲线的交点
- ThinkPHP 漏洞利用工具
- Lottie动画的使用
- pythonobject转int_object怎么转换成float数据
- traceroute不通linux,能ping通traceroute不通
- directx 11 64位
- Unity(四十五):光照烘焙
- DTAS 3D在车身公差分析中的应用案例
- BFS解决一般性的泊松分酒问题
- SqLite 文件查看编辑工具
- 信息系统安全策略的概念与内容
热门文章
- 《精彩网址大全——工商经济科学教育卷》内容简介
- 目标检测——数据获取和标注(一)
- riak数据库php7,Riak (Engine)
- 期货接盘(期货接盘什么意思)
- 十进制转k进制 k进制转十进制
- define的边缘效应
- To the MAX(蓝书刷题记录)
- 高等教师资格证考试复习笔记-高等教育学-(6)-高等学校的教师和学生
- es filter中使用should
- java 静态区在jvm哪里,JDKJREJVM这三者的联系与区别///java跨平台///堆栈常量区静态区...