Мне нужно выполнить следующую тензорную операцию:
T[i,j,k] = A[i,k]*B[j,k]
Мое решение по грубой силе:
T = np.zeros(shape=(N,N,N))
for i in range(N):
for j in range(N):
for k in range(N):
T[i,j,k] = A[i,k] * B[j,k]
Существует ли более оптимальный подход к этой проблеме? (Примечание: это не простой внешний продукт.) Я предполагаю, что он включает в себя использование np.tensordot с соответствующим значением осей, но в документации не очень понятно, как его использовать.
Это также будет вВ конце нужно работать вообще для любого количества k измерений:
T[i,j,k1,k2,k3,...] = A[i,k1,k2,k3,...]*B[j,k1,k2,k3,...]