吴恩达深度学习–向量化的更多例子

阿里云双11来了!从本博客参与阿里云,服务器最低只要86元/年!

需要记住的经验之谈

       当你在编写神经网络或逻辑回归时,都要尽可能避免使用显示的for循环,有时候无法完全避免for循环,但如果能使用内置函数或其他方法来计算想要的答案,通常会比直接用for循环跟快

例子1:

       你想要计算向量U,它是矩阵A和向量V的乘积:

       根据矩阵乘法的定义:

非向量化的实现方法是;

这是一个两层的for循环,分别对i和j进行循环

向量化的实现方式是:

消除了两层for循环,运行速度要快的多

例子2:

假设在内存中已经有一个向量V,你想要对向量V中的每一个元素进行指数运算。

      首先初始化U为一个零向量,然后用一个for循环每次计算一个元素。

       但实际上python和mumpy中有很多内置函数,只需要调用一个函数就可以完成这些向量计算。

       原先的for循环语句在这里变成了一行代码输入为向量V,输出为向量U。右边的实现方式避免了使用显示的for循环,而且比直接使用for循环更快,实际上Numpy中有很多支持向量值的函数,比如np.log(V)会对向量中的每个元素进行对数计算。

       Np.maximum(v,0):与0相比求最大值。

       看看能否通过NumPy的内置函数本来避免for循环

       接下来让我们把这些知识运用到逻辑回归中的梯度下降算法实现中,看看是否可以至少摆脱两个for循环中的一个,这是我们计算逻辑回归中的导数的代码。

       接下来,我们要消灭这两个for循环,我们的做法是不再将dw1 dw2等显示的初始化为0,移除这一段,然后令dw成为一个向量。

但我们保留了这层针对各个训练样本的for循环

小结:本节给出一个向量化过程,通过移除一个for循环,代码会更快运行,在下一节进一步讨论如何对逻辑回归进行向量化,你会惊讶的看到一种没有for循环的实现方式,不需要对训练样本的for循环,代码几乎可以处理整个训练集。

https://www.jianshu.com/p/e5c82d38be8b

Python量化投资网携手4326手游为资深游戏玩家推荐:《境·界-灵压对决下载

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论