Pytorch, как умножить тензоры переменного размера, кроме первого измерения - PullRequest
1 голос
/ 14 мая 2019

У меня есть один тензор, который A = 40x1.

Мне нужно умножить это на 3 других тензора: B = 40x100x384, C = 40x10, D=40x10.

например, в тензорном B, мы получили 40 100x384 матриц, и мне нужно, чтобы каждая из этих матриц умножалась на соответствующий элемент из A

каков наилучший способ сделать это в pytorch? Предположим, что у нас может быть больше матриц, таких как B, C, D, они всегда будут в стиле 40xKxL или 40xJ

1 Ответ

1 голос
/ 14 мая 2019

Если я правильно понимаю, вы хотите умножить каждую i-ю матрицу K x L на соответствующий i-й скаляр в A.

Один из возможных способов:

(A * B.view(len(A), -1)).view(B.shape)

Или вы можете использовать мощность вещания :

A = A.reshape(len(A), 1, 1)
# now A is (40, 1, 1) and you can do
A*B
A*C
A*D

по существу каждый конечный размер, равный 1 в A, растягивается и копируется для соответствия другой матрице.

...