吴恩达视频-第一门课第2周2.11节-向量化(Vectorization)

2.11 向量化(Vectorization)
  向量化是非常基础的去除代码中 for 循环的艺术,在深度学习安全领域、深度学习实践中,你会经常发现自己训练大数据集,因为深度学习算法处理大数据集效果很棒,所以你的代码运行速度非常重要,否则如果在大数据集上,你的代码可能花费很长时间去运行,你将要等待非常长的时间去得到结果。所以在深度学习领域,运行向量化是一个关键的技巧,让我们举个栗子说明什么是向量化。
  在逻辑回归中你需要去计算𝑧 = w T x {{w}^{T}}x wTx + 𝑏,𝑤、𝑥都是列向量。如果你有很多的特征那么就会有一个非常大的向量,所以𝑤 ∈ R n x {{\mathbb{R}}^{{{n}_{x}}}} Rnx , 𝑥 ∈ R n x {{\mathbb{R}}^{{{n}_{x}}}} Rnx,所以如果你想使用非向量化方法去计算 w T x {{w}^{T}}x wTx,你需要用如下方式(python
在这里插入图片描述
  这是一个非向量化的实现,你会发现这真的很慢,作为一个对比,向量化实现将会非常直接计算 w T x {{w}^{T}}x wTx,代码如下:
  z=np.dot(w,x)+b
  这是向量化计算 w T x {{w}^{T}}x wTx的方法,你将会发现这个非常快
在这里插入图片描述
  让我们用一个小例子说明一下,在我的我将会写一些代码(以下为教授在他的 Jupyter notebook 上写的 Python 代码,)
在这里插入图片描述
在这里插入图片描述
  返回值见图。
  在两个方法中,向量化和非向量化计算了相同的值,如你所见,向量化版本花费了 1.5毫秒,非向量化版本的 for 循环花费了大约几乎 500 毫秒,非向量化版本多花费了 300 倍时间。所以在这个例子中,仅仅是向量化你的代码,就会运行 300 倍快。这意味着如果向量化方法需要花费一分钟去运行的数据,for 循环将会花费 5 个小时去运行。
  一句话总结,以上都是再说和 for 循环相比,向量化可以快速得到结果。
  你可能听过很多类似如下的话,“大规模的深度学习使用了 GPU 或者图像处理单元实现”,但是我做的所有的案例都是在 jupyter notebook 上面实现,这里只有 CPU,CPU 和 GPU都有并行化的指令,他们有时候会叫做 SIMD 指令,这个代表了一个单独指令多维数据,这个的基础意义是,如果你使用了 built-in 函数,像 np.function 或者并不要求你实现循环的函数,它可以让 python 的充分利用并行化计算,这是事实在 GPU 和 CPU 上面计算,GPU 更加擅长 SIMD 计算,但是 CPU 事实上也不是太差,可能没有 GPU 那么擅长吧。接下来的视频中,你将看到向量化怎么能够加速你的代码,经验法则是,无论什么时候,避免使用明确
的 for 循环。
  以下代码及运行结果截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越努力越幸运@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值