簡體   English   中英

矢量化numpy.einsum

[英]Vectorising numpy.einsum

我有四個張量

  1. H(h,r)
  2. A(a,r)
  3. D(d,r)
  4. T(a,t,r)

對於ia每個i ,存在形狀(t, r)的對應T[i]

我需要做一個np.einsum來產生以下結果( pred ):

pred = np.einsum('hr, ar, dr, tr ->hadt', H, A, D, T[0])
for i in range(a):
    pred[:, i:i+1, :, :] = np.einsum('hr, ar, dr, tr ->HADT', H, A[i:i+1], D, T[i])

但是,我想在不使用for循環的情況下進行此計算。 原因是我正在使用autograd ,它目前不適用於項目分配!

一種方法是使用T所有尺寸 -

np.einsum('Hr, Ar, Dr, ATr ->HADT', H, A, D, T)

因為,我們需要對所有輸入中的軸r進行求和,同時保留輸出中的所有其他軸(軸),我沒有看到任何中間方式這樣做/引入任何基於點的工具來利用BLAS 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM