Pytorch如何乘除第一维以外的可变大小的张量
Pytorch how to multiply tensors of variable size except the first dimention
我有一个张量,它是 A = 40x1
。
我需要将这个与其他 3 个张量相乘:B = 40x100x384, C = 40x10, D=40x10
。
例如在张量 B
中,我们有 40 个 100x384
矩阵,我需要将这些矩阵中的每一个与来自 A
的相应元素相乘
在 pytorch 中执行此操作的最佳方法是什么?假设我们可以有更多像 B、C、D 这样的矩阵,它们将始终采用 40xKxL
或 40xJ
的样式
如果我没理解错的话,您想将每个 i-th 矩阵 K x L
乘以 A
中相应的 i-th 标量。
一种可能的方法是:
(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 的尾随维度都被拉伸并复制以匹配另一个矩阵。
我有一个张量,它是 A = 40x1
。
我需要将这个与其他 3 个张量相乘:B = 40x100x384, C = 40x10, D=40x10
。
例如在张量 B
中,我们有 40 个 100x384
矩阵,我需要将这些矩阵中的每一个与来自 A
在 pytorch 中执行此操作的最佳方法是什么?假设我们可以有更多像 B、C、D 这样的矩阵,它们将始终采用 40xKxL
或 40xJ
如果我没理解错的话,您想将每个 i-th 矩阵 K x L
乘以 A
中相应的 i-th 标量。
一种可能的方法是:
(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 的尾随维度都被拉伸并复制以匹配另一个矩阵。