PyTorch官方中文文档:torch.optim (3)

closure (callable) – 一个重新评价模型并返回loss的闭包,对于大多数参数来说是可选的。

class torch.optim.Rprop(params, lr=0.01, etas=(0.5, 1.2), step_sizes=(1e-06, 50))[source]

实现弹性反向传播算法。

参数:

params (iterable) – 待优化参数的iterable或者是定义了参数组的dict

lr (float, 可选) – 学习率(默认:1e-2)

etas (Tuple[float, float], 可选) – 一对(etaminus,etaplis), 它们分别是乘法的增加和减小的因子(默认:0.5,1.2)

step_sizes (Tuple[float, float], 可选) – 允许的一对最小和最大的步长(默认:1e-6,50)

step(closure) [source]

进行单次优化 (参数更新).

参数:

closure (callable) – 一个重新评价模型并返回loss的闭包,对于大多数参数来说是可选的。

class torch.optim.SGD(params, lr=, momentum=0, dampening=0, weight_decay=0, nesterov=False)[source]

实现随机梯度下降算法(momentum可选)。

Nesterov动量基于On the importance of initialization and momentum in deep learning中的公式.

参数:

params (iterable) – 待优化参数的iterable或者是定义了参数组的dict

lr (float) – 学习率

momentum (float, 可选) – 动量因子(默认:0)

weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认:0)

dampening (float, 可选) – 动量的抑制因子(默认:0)

nesterov (bool, 可选) – 使用Nesterov动量(默认:False)

例子:

>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9) >>> optimizer.zero_grad() >>> loss_fn(model(input), target).backward() >>> optimizer.step() Note

带有动量/Nesterov的SGD的实现稍微不同于Sutskever等人以及其他框架中的实现。

考虑动量的具体情况,更新可以写成

v=ρ∗v+g

p=p−lr∗v

其中,p、g、v和ρ分别是参数、梯度、速度和动量。

这跟Sutskever等人以及其他框架的实现是相反的,它们采用这样的更新

v=ρ∗v+lr∗g

p=p−v

Nesterov的版本也类似地被修改了。

step(closure) [source]

进行单次优化 (参数更新).

参数:

closure (callable) – 一个重新评价模型并返回loss的闭包,对于大多数参数来说是可选的。

艾伯特()国内第一家人工智能门户

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydswg.html