擅长:python、mysql、java
<p><code>matmul</code>起作用,在<code>B</code>中有一个转置,因此其倒数第二个dim与<code>A</code>中的最后一个相匹配。在</p>
<pre><code>In [1019]: A=np.random.rand(K,M,N)
In [1021]: B=np.random.rand(K,L,N)
In [1023]: C=np.einsum('kmn,kln->kml',A,B)
In [1024]: C.shape
Out[1024]: (2, 4, 3)
In [1026]: D=A@B.transpose(0,2,1)
In [1027]: D.shape
Out[1027]: (2, 4, 3)
In [1028]: np.allclose(C,D)
Out[1028]: True
</code></pre>
<p>对于这个小例子,<code>timeit</code>是相同的。在</p>
<p><code>[np.dot(x,y.T) for x, y in zip(A, B)]</code>执行相同的操作;将<code>y</code>的最后第二个维度与{<cd7>}的最后一个维度匹配,并迭代{<cd3>}和{<cd2>}的第一个维度。在</p>