繁体   English   中英

矩阵乘法性能

[英]matrix multiplication performance

代码如下:

In [180]: rng = np.random.RandomState(123)

In [181]: A1 = rng.uniform(size=(10000,80))

In [182]: B1 = rng.uniform(size=(10000,30))

In [183]: A2 = rng.uniform(size=(80,10000))

In [184]: B2 = rng.uniform(size=(30,10000))

In [185]: %timeit np.dot(A1.T, B1)
10 loops, best of 3: 136 ms per loop

In [186]: %timeit np.dot(A2, B2.T)
10 loops, best of 3: 25.1 ms per loop

In [4]: %timeit np.dot(A2, B1)
10 loops, best of 3: 56.3 ms per loop

我想乘(A1, B1)(A2, B2)以形成(80,30)矩阵,这里的不同之处在于A1被定义为的转置A2 ,具有10000A1 ,但80行中A2 B1,B2相同。

性能相当的不同,我想这是因为内存布局numpy.array更为缓存友好大柱大排 ,对不对? 但是如何?

MCM是一种算法,它计算出最有效的方式来乘法一组矩阵,值得学习更多有关矩阵乘法的知识。 通常,矩阵乘法不是可交换的,根据顺序,您可以得到截然不同的运行时间来进行计算。

标准维基

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM