5

我有以下四个张量

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

对于每一个iin a,都有一个对应T[i]的shape (t, r)

我需要做一个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它目前不适用于项目分配!

4

1 回答 1

3

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

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

因为,我们需要在所有输入中对轴进行求和r,同时将所有其他(轴)保留在输出中,我看不到任何中间方法/在此基础上引入任何基于点的工具来利用 BLAS。

于 2017-11-30T21:06:50.940 回答