1. 磐创AI首页
  2. Medium

矢量化和非矢量化数学计算

在深度学习中,我们通常要处理大量的数据集。当我们编写机器学习函数时,我们必须确保我们的代码在计算上是高效的,因此我们总是使用向量化。非计算最优函数可能会成为我们算法中的一个巨大瓶颈,并可能导致模型需要很长时间才能运行。

为了比较矢量化和非矢量化的计算时间,我们创建了介于11和99之间的随机数。我们创建两个列表:

让我们将DOT实现与for循环和NumPy库进行比较:

我们使用示例SIZE=10000尝试了上面的代码示例。结果是:未矢量化的计算时间:234.51972007751465;矢量化的计算时间:0.9977817535400391。从我们的结果可以看出,np.dot的速度要快200倍以上。

让我们将外部实现与for循环和NumPy库进行比较:

我们使用示例size=1000尝试了上面的代码示例。结果是:计算时间=747.028112411499计算时间=3.990650177001953从我们的结果可以看出,np.out速度更快,接近200倍。

让我们将ELEMENTWISE乘法实现与for循环和NumPy库进行比较:

我们使用示例SIZE=500000尝试了上面的代码示例。结果是:计算时间=334.1071605682373计算时间=1.9948482513427734从我们的结果可以看出,np.乘法速度更快,约为150倍。

让我们将常规DOT实现与for循环和NumPy库进行比较:

我们使用示例SIZE=500000尝试了上面的代码示例。结果是:计算时间=1468.2056903839111计算时间=3.125从我们的结果可以看出,一般的np.dot要快500倍左右。

正如您可能已经注意到的,矢量化实现要干净得多,效率也更高。向量和矩阵越大,运行时间的差异就越大。

结论:

请记住,向量化在深度学习中非常重要。我们知道什么是Sigmoid、Sigmoid导数、阵列整形、行归一化、广播、Softmax和矢量化。因此,在下一个教程中,我们将开始构建一个渐变下降函数,在那里一切都会变得更加精彩和有趣!我希望我们有一个小的热身,以帮助您在未来到这一点。

最初发表于https://pylessons.com/Logistic-Regression-part3https://pylessons.com/Logistic-Regression-part3

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/17/%e7%9f%a2%e9%87%8f%e5%8c%96%e5%92%8c%e9%9d%9e%e7%9f%a2%e9%87%8f%e5%8c%96%e6%95%b0%e5%ad%a6%e8%ae%a1%e7%ae%97/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息