我已经使用numpy库对python中的乘法矩阵进行了一些测试。
array1 = np.random.rand(100,100,100,100)
array2 = np.random.rand(100,100,100,100)
array_new1 = np.reshape(array1, (100*100, 100*100))
array_new2 = np.reshape(array2, (100*100, 100*100))
time1 = time.time()
product = array1 * array2
time2 = time.time()
time_tot1 = time2 - time1
time3 = time.time()
product2 = array_new1 * array_new2
time4 = time.time()
time_tot2 = time2 - time1
time5 = time.time()
prod_einsm = np.einsum('abcd, abcd->abcd', array1, array2)
time6 = time.time()
time_tot3 = time6 - time5
time7 = time.time()
prod_einsum2 = np.einsum('ab, ab-> ab', array_new1, array_new2)
time8 = time.time()
time_tot4 = time8 - time7
print time_tot1, time_tot2, time_tot3, time_tot4
在我的真实代码中,我正在处理更高维度,并想知道如何提高性能。毫无疑问,einsum经过优化并且工作速度非常快。我也注意到使用2维矩阵的有益效果4.还有什么我可以做的吗?也许我应该考虑并行编程? 有什么想法和提示吗?
〜