Как перевести операцию einsum в чистые матричные операции? [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как перевести операцию einsum в чистые матричные операции? [закрыто]

Сообщение Anonymous »

Я пытаюсь понять следующую операцию einsum над тремя тензорами разных измерений.

Код: Выделить всё

out = np.einsum("bsw, swtv, st -> btv", X, W, M)
Где X = [10, 20, 32], W = [20, 32, 20, 6] и M = [ 20, 20]
  • Во-первых, в каком порядке выполняются операции?
  • Это (X * W) * M или X * (W * M) ?
  • Являются ли операции в einsum поэлементным умножением или матричными операциями изменения формы?
  • Если бы я хотел перевести операцию einsum в чистый Умножение матриц/точечное произведение, как мне это сделать?
По ощущениям, einsum довольно загадочный инструмент, если только вы не используете его в течение длительного времени. Есть ли какие-либо причины, по которым кто-то предпочел бы это более прозрачным матричным операциям?
  • Я пытался перевести их в чистые матричные операции, но конечный результат отличается от результата einsum.
Мой процесс был следующим:

Код: Выделить всё

X_inter = X.reshape(-1, 32)
W_inter = W.transpose(1,0,2,3).reshape(32, -1)
Y_inter = np.matmul(X_inter, W_inter)
XX_inter = Y_inter[:, 0].reshape(10, 20)
WW_inter = Y_inter[0, :].reshape(20, 20, 10)
W_M = WW_inter * M[:, :, None]
W_M = W_M.reshape(20, -1)
Y_out = np.matmul(XX_inter, W_M).reshape(10, 20, 6)

Но когда я проверяю Y_out по выводу einsum, они не совпадают с np.allclose(np.einsum("bsw, swtv, st -> btv ", X, W, M), Y_out) = False
Будем благодарны за любую помощь.
PS: Думаю, я считаю, что порядок операций сначала X * (W * М)

Подробнее здесь: https://stackoverflow.com/questions/793 ... operations
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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