在 PyTorch 中就地添加多个张量

Har*_*han 1 pytorch tensor

我可以像这样添加两个张量xy就地

x = x.add(y)
Run Code Online (Sandbox Code Playgroud)

鉴于所有张量都具有相同的维度,有没有办法对三个或更多张量做同样的事情?

rom*_*man 5

result = torch.sum(torch.stack([x, y, ...]), dim=0)
Run Code Online (Sandbox Code Playgroud)

无堆栈:

from functools import reduce

result = reduce(torch.add, [x, y, ...])
Run Code Online (Sandbox Code Playgroud)

编辑

正如@LudvigH 指出的那样,第二种方法不像就地添加那样节省内存。所以最好是这样:

from functools import reduce

result = reduce(
    torch.Tensor.add_,
    [x, y, ...],
    torch.zeros_like(x)  # optionally set initial element to avoid changing `x`
)
Run Code Online (Sandbox Code Playgroud)