吴恩达《深度学习》第四门课(1)卷积神经网络

1.1计算机视觉

(1)计算机视觉的应用包括图像分类、目标检测、图像分割、风格迁移等,下图展示了风格迁移案例:

(2)图像的特征量非常之大,比如一个3通道的1000*1000的照片,其特征为3*1000*1000达到300万,如果第一个隐藏层有1000个单元那么W[1]有20亿个参数,计算量不仅大,而且由于图像样本相对于特征实在是太少,导致很容易过拟合,所以需要其他的方式来连接,即卷积。

1.2边缘检测示例

(1)卷积运算是输入图像与过滤器(也叫核)进行的运算,得到输出图像。卷积核与图像对应的位置相乘求和得到一个新值,如下图所示:

输出中第一个绿色框的值为:

(2)每个不同的核可以检测到不同的边缘特性,如下面的核就可以检测到图像的垂直特性,即输入图像中的边缘会在输出图像中用白色显示出来,非边缘部分显示为黑色或灰色。同理还有其他水平边缘检测等各种核(过滤器)。

1.3更多边缘检测的内容

(1)除了上面提到的卷积核,还有其他许多卷积核,把上面3*3的卷积核看成9个参数,然后不是通过人工的确定,而是通过神经网络来学习这些参数,这就是卷积神经网络。

1.4Padding

(1)边缘不填充会有两个缺点:第一是随着不断卷积,图像会变得越来越小,有时你可不想让它变小;第二是最角落的点只被使用了一次,这意味着在下传的过程中丢掉了图像边缘位置的信息。如下图所示(角落的绿色点只被计算了一次,中间红色点可以被计算多次):

(2)Padding经常可以设置成为两个参数:第一个是Valid,即不做填充;第二个是Same,即输出尺寸与输入尺寸相等。

(3)在步长为1是有公式:n+2p-f+1为输出的尺寸。其中n是输入的尺寸(比如说宽),f是卷积核的大小(比如3),p是每一边额外添加的列数(如添加一列就为1)。所以根据这个式子很容易计算出用Same参数时,p=(f-1)/2,注意此处前提都是步长为1。

1.5卷积步长

(1)输入与输出的尺寸关系如下,注意当结果不是整数时是向下取整。

(2)在深度学习的卷积没有必要像数学或者信号处理教材中,先将卷积核顺时针旋转90°,然后在水平翻转,最后再进行与上面相同的卷积运算。深度学习直接忽略了那些旋转翻转的步骤。影响不大。

1.6三维卷积

(1)三维的卷积方法如下图所示,卷积核的通道数与输入图像的通道数相同,输出图像的通道数为所使用的卷积核的个数,至于高和宽还是按照上面提到的公式计算:

1.7单层卷积网络

(1)每一个卷积核的输出对应一个实数b(偏差),然后在进行激活函数的非线性转换得到输出,如下图所示:

(2)参数个数的计算:比如10个卷积核3*3*3,b的个数跟卷积核个数相同,所以总的参数为(3*3*3+1)*10=280,不管输入尺寸多大,参数个数始终保持不变,而在全连接网络中参数个数是会随着输入不同而不同的。

(3)一些符号如下所示,习惯上w用m*nH[l]*nW[l]*nC[l]表示,b用1*1*1*nC[l]

1.8简答的卷积网络示例

(1)案例图如下:最核心的就是要会计算输出尺寸(公式((n+2p-f)/s)+1,向下取整)。

1.9池化层

(1)池化层中没有需要学习的参数,所以通常不把池化层当做独立的一层来看。

(2)池化层是一般不会设置padding,即一般padding为0。

(3)fitter为2,stride为2是最常见的参数设置,尺寸图像缩小为原来的一半。

(4)卷积时用的尺寸计算公式同样适用于池化层,如下图所示:

(5)最大池化层比平均池化层更为常用。

1.10卷积神经网络示例

(1)下面是一个0-9数组分类的网络,包括了卷积层、池化层、全连接层:

(2)一般而言,不断卷积之后,图像的高度和宽度会变小,通道数(深度)会增加。

(3)在神经网络中,另一个常见的模式就是一个或多个卷积层之后跟随一个池化层,然后一个或多个卷积层之后跟随一个池化层,然后跟几个全连接层,最后是一个softmax.

(4)下面是针对上面网络的一些输出和参数的个数,其中参数一栏最后三行的值应该是48000+120、10080+84、840+10

1.11为什么使用卷积

(1)卷积网络的参数远少于全连接的原因主要有两点:第一是参数共享,如左上角用一个垂直的卷积核检测,那么这个卷积核也同样适用于图像的其他区域;第二是稀疏连接,如某个输出值只与特定的几个值相连接(如九个值)。

(2)卷积神经网络善于捕捉偏移不变形,例如把图像往右平移几个像素,对于网络而言没什么影响。

原文地址:https://www.cnblogs.com/ys99/p/9315193.html

时间: 2024-10-16 03:28:33

吴恩达《深度学习》第四门课(1)卷积神经网络的相关文章

吴恩达深度学习课程第二课-改善深层神经网络

第一周 深度学习的实用层面 1.1 训练,配置,测试训练集 学习完如何构建神经网络,接下来学习如何高效运行神经网络 数据集划分: train,dev,test: 在train中训练模型,利用dev选择最佳模型,利用test测试最终模型 1.2 偏差Bias,方差Variance 欠拟合(高偏差),过拟合(高方差) 1.3 处理欠拟合,过拟合方案 1.4 正则化Regularization 原文地址:https://www.cnblogs.com/nrocky/p/12114269.html

吴恩达深度学习课程第一课 — 神经网络与深度学习 — 第一周练习

课程一 - 神经网络和深度学习 第一周 - 深度学习简介 第 1 题 “人工智能是新电力”这个比喻指的是什么? A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力. B.通过“智能电网”,人工智能正在传递新一波的电力. C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情. D.与100年前开始的电力类似,人工智能正在改变多个行业. 第 2 题 以下哪些是最近深度学习开始崛起的原因?(选2个答案) A.我们拥有了更多的计算能力 B.神经网络是一个崭新的领域. C.

吴恩达深度学习:1.2什么是神经网络

写在开头的话,本博客内容全部来自吴恩达深度学习教学课程,插图均来自吴恩达课件,在此说明来处,不喜勿喷! 一.什么是神经网络 1.我们从一个房屋加个预测的例子开始,假设有一个6间房间的数据集,已知房屋的面积单位是平方米或者平方英尺,已知房屋加个,现在想要找到一个函数,根据房屋面积来预测房屋价格的函数.如果有机器学习的只是,可以用线性回归得到这样的一条直线: 但是我们知道,价格永远不可能为一个负值,所以用一个直线的线性回归进行预测不太合适,我们可以在size轴将预测线弯曲一点,让他结束于0,我们所要

吴恩达-深度学习-课程笔记-6: 深度学习的实用层面( Week 1 )

1 训练/验证/测试集( Train/Dev/test sets ) 构建神经网络的时候有些参数需要选择,比如层数,单元数,学习率,激活函数.这些参数可以通过在验证集上的表现好坏来进行选择. 前几年机器学习普遍的做法: 把数据分成60%训练集,20%验证集,20%测试集.如果有指明的测试集,那就用把数据分成70%训练集,30%验证集. 现在数据量大了,那么验证集和数据集的比例会变小.比如我们有100w的数据,取1w条数据来评估就可以了,取1w做验证集,1w做测试集,剩下的用来训练,即98%的训练

吴恩达-深度学习-课程笔记-7: 优化算法( Week 2 )

1 Mini-batch梯度下降 在做梯度下降的时候,不选取训练集的所有样本计算损失函数,而是切分成很多个相等的部分,每个部分称为一个mini-batch,我们对一个mini-batch的数据计算代价,做完梯度下降,再对下一个mini-batch做梯度下降.比如500w个数据,一个mini-batch设为1000的话,我们就做5000次梯度下降(5000个mini-batch,每个mini-batch样本数为1000,总共500w个样本). 对于batch梯度下降(每次计算所有的样本),随着迭代

吴恩达-深度学习-课程笔记-8: 超参数调试、Batch正则化和softmax( Week 3 )

1 调试处理( tuning process ) 如下图所示,ng认为学习速率α是需要调试的最重要的超参数. 其次重要的是momentum算法的β参数(一般设为0.9),隐藏单元数和mini-batch的大小. 第三重要的是神经网络的层数和学习率衰减 adam算法的三个参数一般不调整,设定为0.9, 0.999, 10^-8. 注意这些直觉是ng的经验,ng自己说了,可能其它的深度学习研究者是不这么认为的. 那么如何选择参数呢?下面介绍两个策略,随机搜索和精细搜索. 早一代的机器学习算法中,如下

吴恩达 深度学习笔记+作业 (一)

1.1.2 Building basic functions with numpy 1.1.2.2 numpy.exp, sigmoid, sigmoid gradient import numpy as np def sigmoid(x): s = 1/(1+np.exp(-x)) return s # 设sigmoid为s, s' = s*(1-s) def sigmoid_derivative(x): s = 1/(1+np.exp(-x)) ds = s*(1-s) return ds

吴恩达深度学习专项课程3学习笔记/week1/Setting up ML Application

应用ML是一个高度迭代的过程 Idea->Code->Experment->... 去不断地调整超参数. Train/Dev/Test sets 通常将数据集划分为Train/Dev/Test集. Training set: 用于模型的训练 Hold-out cross validation set/Developmet set: 用于测试,调整模型超参数 Test set: 用于最终评估 以前的ML问题:数据规模在w级,通常70/30划分Train/Test集或者60/20/20比例划

吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(二)

经典网络 LeNet-5 AlexNet VGG Ng介绍了上述三个在计算机视觉中的经典网络.网络深度逐渐增加,训练的参数数量也骤增.AlexNet大约6000万参数,VGG大约上亿参数. 从中我们可以学习到: 随着网络深度增加,模型的效果能够提升. 另外,VGG网络虽然很深,但是其结构比较规整.每经过一次池化层(过滤器大小为2,步长为2),图像的长度和宽度折半:每经过一次卷积层,输出数据的channel数量加倍,即卷积层中过滤器(filter)的数量. 残差网络(ResNet) 由于存在梯度消

吴恩达深度学习笔记(deeplearning.ai)之循环神经网络(RNN)(一)

1. RNN 首先思考这样一个问题:在处理序列学习问题时,为什么不使用标准的神经网络(建立多个隐藏层得到最终的输出)解决,而是提出了RNN这一新概念? 标准神经网络如下图所示: 标准神经网络在解决序列问题时,存在两个问题: 难以解决每个训练样例子输入输出长度不同的情况,因为序列的长度代表着输入层.输出层的维度,不可能每训练一个样例就改变一次网络结构. 标准的神经网络不能共享从文本不同位置上学到的特征.举例说明:如果Harry作为人名位于一个训练例子中的第一个位置,而当Harry出现在其他例子的不