Tensordot путаница - PullRequest
       1

Tensordot путаница

0 голосов
/ 07 ноября 2018

Возможно, я неправильно понял 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

Что я недопонимаю?

1 Ответ

0 голосов
/ 07 ноября 2018

Мы стремимся сохранить несколько осей выровненными. Таким образом, tensordot не будет работать напрямую . Вместо этого мы можем использовать np.einsum -

np.einsum('ijklmn,ijnm->ijkl',a,b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...