吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究

2.1为什么要进行实例探究

(1)就跟学编程一样,先看看别人怎么写的,可以模仿。

(2)在计算机视觉中一个有用的模型,,用在另一个业务中也一般有效,所以可以借鉴。

(3)本周会介绍的一些卷积方面的经典网络经典的包括:LeNet、AlexNet、VGG;流行的包括:ResNet、Inception,如下图:

2.2经典网络

(1)LeNet-5网络结构如下图所示:

(2)在LeNet-5中的一些注意点:网络输入单通道的,大概有6万个参数,池化用的是平均池化而不是最大值池化,还没有用到padding,输出也不是现在的softmax,激活函数用的是sigmoid和tanh。综上可以看出来许多设置在今天看来都是不合适的了,说明网络在发展。

(3)AlexNet网络结构如下图所示:

(4)AlexNet与LeNet-5有非常多相似之处,但前者的网络更深更大,参数达到6000万,同时使用了Relu激活函数。

(5)VGG-16网络结构如下图所示:

(6)VGG-16网络的说明:16代表卷积层加全连接层一共16层,图中的×2表示连续两次相同的卷积,所有卷积padding都是用了same,卷积核的个数都是成倍增加,而高宽刚好对半减小,真个网络非常简洁优美,网络参数非常多达到了1.38亿各参数,在今天看来依旧是非常大的网络。

2.3残差网络(Residual Networks(ResNets))

(1)一般正常的网络会进行如下操作:

(2)然后将a[l]传到下下层的激活函数之前,即进行如下计算,就得到了残差块:

(3)以下是一个有五个残差块的网络:

(4)残差网络克服了网络很深时存在的梯度消失或爆炸的问题。

(5)下图展示了普通网络和残差网络随着网络深度训练误差的变化,普通网络由于网络很深之后难以训练所以训练误差变大了。

2.4残差网络有什么用

(1)因为残差网络很容易学习恒等式函数,所以随着网络加深,至少不会让网络变差。如下图中添加了两层,使用Relu激活函数,当W[l+2],b[l+2]都为0时,输出还是和不添加这两层的结果一样,都是a[l],这就是学习恒等式。

(2)另个一需要讨论的问题就是维度匹配问题,当z[l+2]和a[l]相同时,可以直接相加,如果不同时需要在让a[l]与矩阵Ws相乘,Ws的维度为(a[l+2],a[l]),如下图所示:

2.5网络中的网络以及1×1卷积

(1)1×1计算示意图如下所示:

(2)作用:首先相当于把一个点的所有通道进行了全连接操作;其次是起到压缩通道的作用(最重要的作用),或者保持不变,如下图所示。

2.6谷歌Inception网路简介

(1)构建卷积层时,你要决定使用多大的卷积核(如1×1,3×3,5×5等)或者要不要添加池化层,而Inception网络的Inception层作用就是它将替你做决定。

(2)下面就是一个典型的Inception模块的示意图:

(3)用1×1卷积核来构建瓶颈层可以大大减少计算量:

首先是没有添加1×1卷积核如下图所示,由于加法的运算次数和乘法运算次数接近,所以这里只求乘法的计算次数:(5*5*192)*(28*28*32)=1.2亿

添加了卷积核之后,如下图所示,整个的输入输出是没有发生改变的,乘法计算量为(1*1*16)*(28*28*16)+(5*5*16)*(28*28*32)=1240万。只有上面的十分之一。所以计算量减少了很多,同时只要合理构建,不会影响网络性能。

2.7Inception网络

(1)下面是Inception的一个单元,需要注意的是池化时保持尺寸不变,同时池化不能改变通道数导致通道特别多,所以在其后面添加了1×1卷积核压缩通道。

(2)下面是一个完整的Inception网络,其中可以看到有一些分支,他们同样可以做最终输出预测,这样做是为了防止过拟合。

2.8使用开源的实现方案

(1)在GitHub上找资源,然后在此基础上进行开发,会有更快的进展。

2.9迁移学习

(1)下载别人的模型,以前预训练的权重来初始化,同时将输出层根据自己的需要来修改,比如说分三种类别(已经包括其它了),那么输出为3个单元的sotfmax。如下图所示:

(2)冻结别人训练好的参数,在深度学习框架中可能参数是trainableParameter=0,或者freeze=1等,视实际框架而定。

(3)一个重要技巧是:数据量少时只训练最后一层,这时可以将图片输入,然后将最后一层前的输出存到硬盘中,因为这些值是不会改变的。然后在用这些值作为输入训练最后一层,这样不要每次都经过前面的网络,训练会大大加快。

(4)当数据量越来越大时,从后往前可以训练更多的层,极端情况下是所有层的参数都参与训练。

2.10数据扩充

(1)镜像、随机裁剪、旋转、剪切、扭曲

(2)色彩转换(如给一些通道加值)

(3)在实际使用过程中可以使用多线程,一些线程从硬盘中取出数据,然后进行数据扩充,再传入其他线程进行训练,这样就可以并行实现了。

2.11计算机视觉现状

(1)对于计算机视觉而言,其实当前的数据量是远远不够的,所以需要设计出一些更复杂的网络,以及人工去调整非常多的超参数,其本质都是因为数据量不够;假设数据量非常够的时候,网络也好,超参数也好都可以使用更简单的架构和调整。

(2)再次强调多多使用迁移学习,站在巨人的肩膀上。另外如果要自己设计研究全新的网络可能需要自己从头开始训练。

(3)为了在竞赛中取得好成绩,常常是以巨大的计算量为代价的(如用多个网络计算输出取平均),这在实际应用中不太实用。

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

时间: 2024-10-09 08:56:24

吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究的相关文章

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

第一周 深度学习的实用层面 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出现在其他例子的不