X給定一個維度為 ( )的 3d 陣列K,n,m,可以將其視為K( n,m) 矩陣的堆疊和一個 1d 向量b(dim n),目標是獲得結果向量r(dim n),其每個分量計算如下:

很容易看出k-summation 下的運算式(即兩個內部和)只是一個點積X_k b X_k(因此可以很容易地使用 計算numpy)。所以,所需的向量r是

哪里X_k是3d array 的k第 -th 2d ( n,m) 'layer' X。
即當前的解決方案是
r = 0
for k in range(K):
r = x[k,:,:] @ (b @ x[k, :, :])
是否可以r有效地計算避免 for 回圈k?或者也許還有另一種有效的計算方法r?
(我試過np.tensordot了,但因為它只是純粹的總結,k我還沒有得到正確的結果。)
uj5u.com熱心網友回復:
這看起來像是einsum的完美用例:
r = np.einsum('kij,l,klj->i', x, b, x)
這將使操作矢量化,例如它比 for 回圈更優化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471439.html
