1.什么是向量化
在逻辑回归中(python)
显然,向量化快速,方便。
2.小例子(python):向量化和非向量化运行时间的区别
import numpy as np
n = np.arrary([1,2,3,4])
print(a)
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("For loop:" + str(1000*(toc-tic)) +"ms")#打印for循环的版本的时间
运行一次结果
结果说明向量化可以节省很多时间
更多例子
- 避免使用for循环
- 例1:向量u为矩阵A与向量v的乘积,左边为非向量版本,右边是向量版本(python)
- 例2:假设你内存里已有向量v,对v中的每一个元素如果做指数运算
非向量
u = np.zeros(n,1)
for i in range(n)
u[i] = math.exp.(v[i])
向量
import numpy as np
u = np.exp(v)
numpy里面有很多内置函数,np.log(v)(每个元素的对数)、np.abs(v)(每个元素的对绝对值)、np.maximum(v)(v里和0相比最大元素)。
- 怎么把向量化用到逻辑回归,去掉for循环。
逻辑回归导数的程序
想向量化,dw1,dw2不要初始化为0,应为向量