吴恩达之深度学习和神经网络-2.10-2.12向量化
程序员文章站
2022-07-14 20:18:19
...
什么是向量化,为什么引入向量化。
以logistic线性回归为例,
非向量化实现:
for i in range(n):
向量化实现:
以上两个程序分别对进行实现,非向量化采用for循环,而向量化则完全的隐藏了for循环,因为,在深度学习中,要去训练大量的数据,要是采用for循环,将会把训练时间拉伸的很长,这对于深度学习来说并不是那么理想。
因此,采用向量化的原因就是避免for循环的使用,在以后的日常编程当中,要尽可能做到以内函数来替代for循环,这样,我们的程序将会快很多。
那如何使用内函数避免for循环的使用,这里将会用到一个python的内置库-numpy,这个库十分强大,几乎就是为了数学计算而产生的,我们几乎能用到的数学公式都可以从numpy中找到并使用,避免了for循环,极大的缩短程序运行时间。
# -*- coding: utf-8 -*-
import numpy as np
import time
a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a,b)
toc = time.time()
print(c)
print('vectorized version:'+str(1000*(toc-tic))+'ms')
c = 0
tic = time.time()
for i in range(1000000):
c += a[i]*b[i]
toc = time.time()
print(c)
print('vectorized version:'+str(1000*(toc-tic))+'ms')
可以看出来,向量化比for循环的时间要缩短将近100倍的时间,这在深度学习中将是非常重要的,可以大幅度缩短训练时间。
看下面的例子:
for i = 1 to n:
向量化之后的式子为:
for i = 1 to n:
numpy中有许多可以用作数学计算公式的方法,譬如:
np.exp(v)求每一个值的指数
np.log(v)求每一个值得log值等等
上一篇: R语言神经网络量化交易模型
下一篇: 神经网络二值量化——ReActNet