torch.Tensor.add_ 发生了什么?

Dan*_*ler 5 pytorch

我正在研究 PyTorch 的 SGD 实现:https://pytorch.org/docs/stable/_modules/torch/optim/sgd.html#SGD

我看到一些我不明白的奇怪计算。

例如,看一下p.data.add_(-group['lr'], d_p). 认为两个参数相乘是有道理的,对吗?(这就是 SGD 的工作原理,-lr * grads

但该函数的文档对此没有任何说明。

更令人困惑的是,虽然这个 SGD 代码实际上可以工作(我通过复制代码并调用下面的 prints 进行测试)add_,但我不能add_像它那样简单地使用两个参数:

#this returns an error about using too many arguments 
import torch

a = torch.tensor([1,2,3])
b = torch.tensor([6,10,15])
c = torch.tensor([100,100,100])
a.add_(b, c)
print(a)
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我缺少什么?

Ale*_*hev 3

这适用于标量:

a = t.tensor(1)
b = t.tensor(2)
c = t.tensor(3)
a.add_(b, c)
print(a)
Run Code Online (Sandbox Code Playgroud)

张量(7)

或者a可以是张量:

a = t.tensor([[1,1],[1,1]])
b = t.tensor(2)
c = t.tensor(3)
a.add_(b, c)
print(a)
Run Code Online (Sandbox Code Playgroud)

张量([[7, 7], [7, 7]])

输出为 7,因为:(Tensor other, Number alpha)