2-4 向量化

向量化(Vectorization)

向量化是非常基础的去除代码中 for 循环的艺术 。

在逻辑回归中需要去计算$z = {w^T}x + b$,w,x都是列向量 ,如果维度为nx,那么采用非向量化的方式计算就需要采用下面的方法:

z=0
for i in range(n_x)
    z+=w[i]*x[i]
z+=b

作为一个对比,向量化实现将会直接计算 {w^T}x:

z=np.dot(w,x)+b

 向量化的实现版本:

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(“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”)

向量化的更多例子( More Examples of Vectorization

矩阵乘法:

u = np.dot(A,v)

对向量v的每个元素做指数操作:

u = np.exp(v)

计算对数函数:

u = np.log(v)

计算数据绝对值:

u = np.abs(v)

计算一组元素中的最大值:

u = np.maxinum(v) 
posted @ 2018-08-14 22:04  刘-皇叔  阅读(625)  评论(0编辑  收藏  举报