У меня много матриц w1
, w2
, w3...wn
с фигурами (k*n1
, k*n2
, k*n3...k*nn
) и x1
, x2
, x3...xn
с фигурами (n1*m
, n2*m
, n3*m...nn*m
).
Я хочу получить w1@x1
, w2@x2
, w3@x3
... соответственно.
Полученная матрица состоит из нескольких k*m
матриц и может быть объединен в большую матрицу с формой (k*n)*m
.
Умножать их по одному будет медленно. Как векторизовать эту операцию?
Примечание. Входными данными могут быть матрица k*(n1+n2+n3+...+nn)
и матрица (n1+n2+n3+...+nn)*m
, и мы можем использовать индекс пакета, чтобы указать эти подматрицы.
Эта операция относится к операциям рассеяния, реализованным в pytorch_scatter
, поэтому я называю это "scatter_matmul
".