吴恩达老师DeepLearning系列课程最详细学习笔记之18—更多向量化实例

这篇博客整理了吴恩达深度学习课程的学习笔记,强调在编写网络和回归计算时避免使用for循环,推荐使用内置函数以提高效率。作者通过矩阵乘法和指数运算的例子展示了向量化的优势,并应用到logistic回归的梯度下降算法中,减少了代码中的for循环,提升了运算速度。下一部分将探讨如何进一步向量化logistic回归,实现对整个训练集的一次性处理。
摘要由CSDN通过智能技术生成

 教程是本人学习吴恩达老师DeepLearing系列课程中整理的最为详细的学习笔记。学习视频主要来自B站[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili?,以及DeepLearning官方网站Deep Learning by deeplearning.ai | Coursera。该系列课程总共有180多个,我会将学习笔记陆续分享出来,为有兴趣深度学习的同仁提供便利。再次由衷感谢吴恩达老师的精彩讲解和无私奉献!

特别说明:图片来源于吴恩达老师视频截图。

 

 

 

 

 

附文本:

 
在前一个视频,你看到了如何向量化,如何使用内置函数避免使用显示for循环,可以让程序运行速度显著加快。我们再看看几个例子。
要记住:经验法则是,当你编写新的网络时,或者你做的只是回归,那么一定要尽量避免for循环。 能不用就不用。如果你可以使用一个内置函数,或者找出其他办法去计算循环,通常会比直接用for循环更快。
来看一个例子,如果你想计算一个向量u,作为矩阵和另一个向量v的乘积 。矩阵乘法的定义就是u_i等A_ij和v_i对j求和,这 就是u_i的定义。就是令u等于np.zeros(n,1),对i循环,对j循环,然后u[i]+=A[i][j]*v[j]。 现在这是一个双重for循环,对指标i和j循环,所以这是一个非向量化的版本。
 
而在右边的实现就是向量化版本,消除了两个不同的for循环,速度会更快。
 
我们再看一个例子,假设你内存里已经有一个向量v, 如果你想做指数运算,作用到向量v的每个元素,你可以令u等于那个向量,这就是[e^(v_1 )   e^(v_2 )… e^(v_n ) ]^T  。所以这是一个非向量化的实现。 一开始你让u初始化成全0向量。然后你有一个for循环,一次计算一个元素,但事实上,python的numpy里面有很多内置函数可以让你计算这些向量。你只需要调用单个函数,所以那我去实现的时候,会导入import numpy as np,这样你就可以调用u=np.exp(v)。 要注意:之前你有这个显示for循环,这里只需要一行代码,v作为输入向量,u作为输出向量,你已经去掉了显示for循环,右边的代码会快得多。实际上numpy库有很多向量值函数,np.log会逐个元素计算log,np.Abs会计算绝对值,np.maximum计算所有元素中的最大值求出v中所有元素和0之间相比的最大值,v**2就是v中每个元素的平方,1/v 就是每个元素求倒数,等等。所以每当你想写一个for循环时,应该看看可不可以调用numpy用内置函数计算,而不是用for循环。
所以我们看看学到的这些技巧,怎么运用到logistic回归梯度下降算法中来,看看是否可以去掉两个for循环中的一个,这就是我们用来计算logistic回归导数的程序。我们有两个for循环,一个在上面这里,第二个是这里,所以在我们的例子中有n_x=2,如果你的特征不止两个的话,你需要使用for循环处理dw1,dw2,dw3直到dwn,所以这里其实有个for j=1 to nx ,dwj就更新了。 所以我想去掉这第二个for循环,这就是上一张幻灯片做的。做法就是这里我们不会显示地把dw1,dw2等等初始化成0,我们要去掉循环,把dw变成一个向量。我们令dw=np.zeros((nx,1))  。然后在这里我们不需要对单个分量用for循环,我们用这个向量操作:dw+=x^((i) ) dz^((i) ) 。最后我们就用dw/=m 。现在我们从两个for循环简化成一个for循环,剩下的这个for循环是对单独的训练样本的循环。
 
所以我希望本视频能给你向量化的概念,同时去掉一个for循环之后你的代码速度会大大加快。事实证明我们还可以做得更好。所以下一个视频将讨论如何进一步向量化logistic回归。你会看到一个非常惊人的结果,就是没有任何for循环,对所有训练样本不用任何for循环,你可以写代码一次处理整个训练集,基本上同时处理整个训练集。我们下个视频见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值