我可能理解错了tensordor。我试图做以下部分收缩:
c(e,q,i,j) = a(e,q,i,j,k,l) * b(e,q,l,k)使用
import numpy as np
a = np.random.random(1*4*2*2*2*2).reshape(1,4,2,2,2,2)
b = np.random.random(1*4*2*2).reshape(1,4,2,2)
c = np.tensordot(a,b,axes=([5,2],[4,3]))但这给了我错误
/usr/local/lib/python3.7/site-packages/numpy/core/numeric.py in tensordot(a, b, axes)
1282 else:
1283 for k in range(na):
-> 1284 if as_[axes_a[k]] != bs[axes_b[k]]:
1285 equal = False
1286 break
IndexError: tuple index out of range我误会什么了?
发布于 2018-11-07 18:03:24
我们希望保持少数轴对齐。因此,tensordot不会直接工作。相反,我们可以使用np.einsum -
np.einsum('ijklmn,ijnm->ijkl',a,b)https://stackoverflow.com/questions/53195049
复制相似问题