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(卷积神经网 ...
随机推荐
- SQL基础教程(第2版)第3章 聚合与排序:3-1 对表进行聚合查询
3-1 对表进行聚合查询 ● 使用聚合函数对表中的列进行计算合计值或者平均值等的汇总操作.● 通常,聚合函数会对NULL以外的对象进行汇总.但是只有COUNT函数例外,使用COUNT(*)可以查出包含 ...
- Ka/ Ks|同义替换的三种路径|kaks_Calculator|
生命组学 研究old gene 和 young gene CAI选择信号:CGmutation信号 Neutrality plot:CG3与GC1.GC2的关系:平:mutation:正相关:sele ...
- 数据类型操作简单对比(R和Python)
一.R方面 R中类型:向量(vector).数据框.矩阵.列表 数据处理转换时:数值型num.因子(factor).字符型等等 1)matrix feature:1.二维数组2.每个元素必须有相同的数 ...
- sklearn.metrics中的评估方法介绍(accuracy_score, recall_score, roc_curve, roc_auc_score, confusion_matrix)
1 accuracy_score:分类准确率分数是指所有分类正确的百分比.分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型.常常误导初学 ...
- 吴裕雄--天生自然 PYTHON3开发学习:基本数据类型
#!/usr/bin/python3 counter = 100 # 整型变量 miles = 1000.0 # 浮点型变量 name = "runoob" # 字符串 print ...
- cookie保存
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- MySql数据库,查询数据导出时会出现重复的记录(数据越多越明显)
在查询数据时,数据量多的时候,我们会使用分页功能. 每页显示多少数据. 这种情况下,一半看不出什么问题. 而导出数据时,有时就是通过分页的方法,逐步讲数据追加到导出文件中. 当全部数据都导出之后,就有 ...
- CSS知识点小结
在网页排版布局中比如文章列表标题排版,无论多少文字均不希望换行显示,需要强制在一行显示完内容.这就可以nobr标签来实现. 一.nobr语法 <nobr>内容</nobr> 不 ...
- LeetCode——735.行星碰撞
给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动).每一颗行星以相同的速度移动. 找出 ...
- 17.3.13--python编码问题
1----字符编码: 字符编码(英语:Character encoding).字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式.自然数串行.8位组或者电脉冲),以便文本在计算机中存储和 ...