pytorch如何将可变尺寸的张量相乘,除了第一维

时间:2019-05-14 14:48:27

标签: python matrix deep-learning pytorch tensor

我有一个张量为A = 40x1

我需要将此一个与其他3个张量相乘:B = 40x100x384, C = 40x10, D=40x10

例如在张量B中,我们得到40个100x384矩阵,我需要将这些矩阵中的每个矩阵与A中的对应元素相乘

在pytorch中执行此操作的最佳方法是什么?假设我们可以有更多的矩阵,例如B,C,D,它们将始终采用40xKxL40xJ的样式

1 个答案:

答案 0 :(得分:1)

如果我的理解正确,您想将每个第i个矩阵K x L乘以A中相应的第i个标量。

一种可能的方法是:

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

或者您可以使用broadcasting的力量:

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

实际上,A中每个等于1的尾随维都被拉伸并复制以匹配另一个矩阵。