我正在尝试寻找一个在
我有两个3D矩阵
numpy
中能够加速以下计算的矩阵运算。我有两个3D矩阵
A
和B
。第一维表示样例,在两个矩阵中都有n_examples
个例子。我想要实现的是对A和B中的每个示例进行点积并求和的结果:import numpy as np
n_examples = 10
A = np.random.randn(n_examples, 20,30)
B = np.random.randn(n_examples, 30,5)
sum = np.zeros([20,5])
for i in range(len(A)):
sum += np.dot(A[i],B[i])
sol1()
再次变得最快,并且比tensordot
解决方案快5倍。我想知道为什么在Python中循环会比本地C实现(如tensordot
)更快。 - ahatensordot()
会更快。你有没有比较过sol4()
和sol5()
,改变轴的计算顺序?也许这会有所不同... - Saullo G. P. Castro600x300
,300x10
,sol1()
需要16.5ms
,sol4()
需要113ms
,sol5()
需要89ms
。 - aha