【发布时间】:2016-12-28 15:51:13
【问题描述】:
我将两个大矩阵相乘,结果发现当我第一次对第一个输入执行求幂时运算速度更快:
import time
import numpy as np
a = np.asarray(np.random.uniform(-1,1, (100,40000)), dtype=np.float32)
b = np.asarray(np.random.uniform(-1,1, (40000,20000)), dtype=np.float32)
start = time.time()
d0 = np.dot(a,b)
print "\nA.B - {:.2f} seconds".format((time.time()-start))
start = time.time()
d1 = np.dot(np.exp(a), b)
print "exp(A).B - {:.2f} seconds".format((time.time()-start))
start = time.time()
d2 = np.dot(a, np.exp(b))
print "A.exp(B) - {:.2f} seconds".format((time.time()-start))
start = time.time()
d3 = np.dot(np.exp(a), np.exp(b))
print "exp(A).exp(B) - {:.2f} seconds".format((time.time()-start))
结果如下:
A.B 1.27 seconds
exp(A).B 1.15 seconds
A.exp(B) 7.31 seconds
exp(A).exp(B) 7.38 seconds
谁能解释我做错了什么,或者这怎么可能?
【问题讨论】:
标签: python numpy numeric execution-time exponentiation