Общее использование многоточия в np.einsumPython

Программы на Python
Ответить
Гость
 Общее использование многоточия в np.einsum

Сообщение Гость »


Я пытаюсь реализовать вычисления в тензорной сети, используя np.einsum. Цель расчета состоит в том, чтобы локальная матрица 2x2 последовательно действовала на тензор размера (2,2,2,...,2,2,2), где количество измерений может быть произвольным (если позволяет память). ). У меня есть работающая наивная реализация для тензора размера (2,2,2)

X = np.array([[1,2],[3,4]]) Y = np.ones(2**3).reshape((2,2,2)) Aijk = np.einsum('zi,zjk', X, Y) Bijk = np.einsum('zi,jzk', X, Aijk) Cijk = np.einsum('zi,jkz', X, Bijk) Как видно, суммируемый индекс должен смещаться вправо при каждом последующем расчете. Я мог бы сгенерировать соответствующую явную строку, но мне интересно, возможно ли реализовать это с помощью эллипсов, но я не уверен, как указать позицию индекса, если индекс не является крайним левым или правым индексом.

X = np.array([[1,2],[3,4]]) Y = np.ones(2**n).reshape(shape) # где shape — соответствующий n-кортеж A = np.einsum('a...,a...', X, Y) B = np.einsum('b...,...b...', X, A) # как указать, что суммированный индекс A является вторым? ... N = np.einsum('l...,...l', X, M) Надеюсь, вам понятно, чего я пытаюсь достичь.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»