我正在研究 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)
这里发生了什么?我缺少什么?
这适用于标量:
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)
| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |