deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
1. 传统的边缘检测(比如Sobel)手工设计了3*3的filter(或者叫kernel)的9个权重,在深度学习中,这9个权重都是学习出来的参数,会比手工设计的filter更好,不但可以提取90度、0度的边缘,也可以提取出任意朝向的边缘(比如73度)。把这9个权重当成参数的思想已经成为计算机视觉中最为有效的思想之一。
2. Padding
对于原始的卷积操作,原图分辨率为n*n,filter分辨率为f*f,则卷积后的结果是 (n-f+1)*(n-f+1)。有两个缺点:1)每次卷积操作都会把图像缩小;2)边缘像素的使用次数比中间像素少,这意味着丢掉了图像的很多边缘信息。为了解决这两个问题,可以在做卷积操作前,先填充(pad)原图。每边填充p个像素,则原图拓展成 (n+2p)*(n+2p) 的分辨率。
p的选择分两种,1)Valid卷积:没有填充,p=0;2)Same卷积:输出和输入有相同的尺寸,p=(f+1)/2。计算机视觉里,f几乎永远是奇数。
3. Stride(步长)
步长为s,则输出的分辨率为 ((n+2p-f)/s+1)*((n+2p-f)/s+1)。如果(n+2p-f)/s不为整数,则向下取整到最近的整数(floor),这个物理意义是只有filter在输入图像内部或者填充后的图像区域才计算卷积,如果filter移动到外面,则不计算。
4. Cross-correlation vs. convolution
卷积的数学定义有flip的步骤,我们这边做的严格说叫corss-correlation(互相关)。但是在深度学习的文献中,按照惯例,我们还是称之为卷积,虽然我们并没有flip的操作。在数学、信号处理中,flip很重要是因为它有结合律的性质,(A*B)*C=A*(B*C)。但在图像处理里,这个性质不重要,所以省去了flip的操作。
5. 多通道图像的卷积
对于n*n*nc的多通道图像,filter是f*f*nc,得到 (n-f+1)*(n-f+1) 的图像。通道数必须一致。
每个filter对应一个特征(比如垂直方向边缘),如果要得到多个特征,则要使用多个filter,每个filter都是f*f*nc,然后把每个filter的结果堆叠起来,这时的结果是 (n-f+1)*(n-f+1)*nc' ,这里nc'是filter的数量,也就是下一层网络的输入图像的通道数。
这里所谓的“通道(channel)”在一些文献里也被称为“深度(depth)”,NG觉得通道更好,因为深度会和神经网络的深度混淆。
6. 单层卷积网络
对于第l层的卷机网络,f[l]是filter的大小(即第l层的filter大小为f*f),p[l]表示padding的像素数量,s[l]表示stride的大小,输入图像是nh[l-1]*nw[l-1]*nc[l-1],输出图像是nh[l]*nw[l]*nc[l],其中nh/w[l]=floor( (nh/w[l-1]+2p[l]-f[l])/s[l]+1 ),nc[l]是这一层的filter的数量,每个filter的大小是f[l]*f[l]*nc[l-1]。激活后的输出a[l]的大小是nh[l]*nw[l]*nc[l],如果有m个样本,向量化之后的激活输出A[l]的大小是m*nh[l]*nw[l]*nc[l]。权重的大小是f[l]*f[l]*nc[l-1]*nc[l]。bias的大小是nc[l],python里的size是 (1, 1, 1, nc[l])。图像的长宽和通道的排序并没有统一,这里NG是把通道放最后(即nh*nw*nc),有的代码是放最前面(即nc*nh*nw)。
例子:如果有10个3*3*3的filter,这一层网络一共有(3*3*3+1)*10=280个参数。对于任意大小的图像,这层网络都只有280个参数,这有效控制住了参数的数量,防止过拟合。
7. 池化层
和卷积操作一样,也是用filter对原图进行操作,超参数是filter的大小f和步长s。一般 f=2,s=2,效果相当于高度和宽度各缩减一半。也有 f=3,s=2的情况。没有需要学习的参数。目的:缩减模型的大小,提高计算速度,提高所提取特征的鲁棒性。
Max pooling:直观解释:只要filter的区域内提取到某个特征,它都会被保留在输出里。
Average pooling:filter内取平均。
Max pooling是最常用的。对于特别深的网络,也许会用average pooling来处理很多通道的数据(比如7*7*1000,整个空间内求平均值得到1*1*1000)。也可以根据自己的意愿做padding,则多一个超参数p,但padding的操作非常非常少用。一般池化层filter的通道数为1,对输入的每个通道单独处理,所以输入有几个通道,输出也是几个通道。
8. 卷积神经网络
前向传播中,随着层数越来越深,图像往往越来越小(开始阶段可能保持相同大小),通道数越来越多。
卷积神经网络一般包含:卷积层(CONV)、池化层(POOL)、全连接层(FC)。池化层没有需要学习的参数,只有超参数。卷积层的参数相对少,大部分参数都在全连接层。
一般一个或多个卷积层后会跟一个池化层,最后几个全连接层(最后一层也许是softmax)。有的书把卷积层、池化层合起来称做一层,有的书把卷积层、池化层分开来算。NG说我们在说深度学习网络有多少层时只考虑有权重的层,由于池化层没有,所以他就把卷积层、池化层合起来称做一层。
9. 卷积层的优点
相比于全连接层,卷积层的两个主要优势:1)参数共享(parameter sharing),某种特征提取器(比如垂直方向的边缘检测)在图像的某一部分适用,那么在其他部分也适用。2)稀疏连接(sparsity of connections),输出的每个元素只与一部分输入有关,从而预防过拟合。
deeplearning.ai 卷积神经网络 Week 1 卷积神经网络的更多相关文章
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
介绍 DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录. 另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程 ...
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
一.深层神经网络 深层神经网络的符号与浅层的不同,记录如下: 用\(L\)表示层数,该神经网络\(L=4\) \(n^{[l]}\)表示第\(l\)层的神经元的数量,例如\(n^{[1]}=n^{[2 ...
- DeepLearning.ai学习笔记汇总
第一章 神经网络与深度学习(Neural Network & Deeplearning) DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络 DeepLe ...
- Coursera深度学习(DeepLearning.ai)编程题&笔记
因为是Jupyter Notebook的形式,所以不方便在博客中展示,具体可在我的github上查看. 第一章 Neural Network & DeepLearning week2 Logi ...
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week3 目标检测
一.目标定位 这一小节视频主要介绍了我们在实现目标定位时标签该如何定义. 上图左下角给出了损失函数的计算公式(这里使用的是平方差) 如图示,加入我们需要定位出图像中是否有pedestrian,car, ...
- deeplearning.ai 卷积神经网络 Week 2 深度卷积网络:实例研究 听课笔记
1. Case study:学习经典网络的原因是它们可以被迁移到其他任务中. 1.1)几种经典的网络: a)LeNet-5(LeCun et al., 1998. Gradient-based lea ...
- deeplearning.ai 卷积神经网络 Week 2 卷积神经网络经典架构
1. Case study:学习经典网络的原因是它们可以被迁移到其他任务中. 1.1)几种经典的网络: a)LeNet-5(LeCun et al., 1998. Gradient-based lea ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM
http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...
- 卷积神经网络(CNN)之一维卷积、二维卷积、三维卷积详解
作者:szx_spark 由于计算机视觉的大红大紫,二维卷积的用处范围最广.因此本文首先介绍二维卷积,之后再介绍一维卷积与三维卷积的具体流程,并描述其各自的具体应用. 1. 二维卷积 图中的输入的数据 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
随机推荐
- 在CentOS/RHEL 7下修改网卡名为 eth0 形式
为了统一企业中的多版本系统共存的环境,这里将网卡名称设置为 eth* 的形式,不使用CentOS/RHEL 7默认的特殊网卡命名规则.所以需要在安装初始的时候,需要增加内核参数. 在启动界面,按 TA ...
- C#-类型转换和引用转换
对象的引用可以被: 隐式地向上转换 显示的向下转换 向上转换 向上转换是指一个从一个基类指向一个子类: House house = new House(); Asset asset = house; ...
- MVPR下的PHP分页教程
这个PHP分页其实不难,现在就开始看看核心思路吧. 我习惯从最底层开始看起. 1. 首先用LIMIT偏移QUERY的指针 /* * get hot post by current page * @pa ...
- 吴裕雄--天生自然 JAVA开发学习:日期时间
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date ...
- Anaconda Installation on Mac: conda command not found 环境变量配置
Mac系统安装完Anaconda 3.7后在terminal输入conda --version,返回command not found 原因可能是没有配置环境变量 在terminal输入vi ~/.b ...
- python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图
meizitu-spider python通用爬虫-绕过防盗链爬取妹子图 这是一只小巧方便,强大的爬虫,由python编写 所需的库有 requests BeautifulSoup os lxml 伪 ...
- Java实战——简介
由于下学期要学习JavaEE所以打算将JavaSE的知识再重新学习一遍,打好基础的同时也希望自己有新的收获和更深刻的理解. 这次复习主要是参考廖雪峰老师的java教程,每学习完一章对其中一些要点进行总 ...
- 安装R的h5包
系统 redhat7 安装H5的包, 依赖系统hdf5包,如下安装完, 发现版本不一致, sudo yum install hdf5-devel 解决办法: 移花接木 sudo ln -s /opt/ ...
- android中的适配器模式
原文: https://blog.csdn.net/beyond0525/article/details/22814129 类适配模式.对象适配模式.接口适配模式
- [USACO09DEC]晕牛Dizzy Cows (拓扑排序)
https://www.luogu.org/problem/P2017 题目背景 Hzwer 神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. 题目描述 The cows have taken ...