‼️博客为作者学习回顾知识点所用,并非商用,如有侵权,请联系作者删除‼️
目录
2.11向量化
什么是向量化vectorization?
import numpy as np
a = np.array[1,2,3,4]
print(a)
#output = [1,2,3,4]
用随机值创建了一个百万维度的数组
import time
import numpy as np
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")
#ouput = vectorized version:0.6549358367919922ms
loop 循环向量化
import time
import numpy as np
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 version:" + str(1000*(toc - tic)) + "ms")
向量化代码之后,运行速度大大提升
2.12向量化的更多例子
2.13 向量化 Logistic回归
如果有M个样本,就需要计算M次z和a;为了执行正向传播步骤,定义矩阵X和 矩阵即
;
;
bbbb···是一个1xM的向量或者1xM的矩阵或者说是一个M维的行向量;
熟悉矩阵乘法,理解下部分红圈的含义;
在python中称为广播“broadcasting”;
计算所有的z与a在同一时间 z=np.dot(w,T,x)+b.
2.14向量化Logistic回归的梯度输出
同理
;
;
均横向排列 ;
;
计算 和
有两种:一种是loop循环,一种是向量化.
T transpose转置;
尽量不要使用亚式循环,但是如果要进行1000次,还是需要使用循环 for i in range(1000)! 这个for循环目前还没有方法去掉~
2.15python中的广播
广播可以使python和numpy的代码运行更高效
详细具体内容见下篇
(于 2022-10-11 10:57:48 首次发布)