Pytorch 之优化器

在 pytorch 中提供了 torch.optim 方法优化我们的神经网络,torch.optim 是实现各种优化算法的包。

 

1. torch.optim.SGD

   这个优化器实现的是实现随机梯度下降算法。

   SGD 是最基础的优化方法,普通的梯度下降法, 需要重复不断的把整套数据放入神经网络 NN 中训练, 这样容易陷入鞍点而使优化无法继续。

   我们使用 SGD 会把数据拆分后再分批(batch)不断放入 NN 中计算. 每次只计算批数据的损失来优化参数,这样既兼顾了性能也兼顾了并行性。

"""
params (iterable) – 待优化参数的 iterable 对象或者是定义了参数组的 dict。
lr (float) – 学习率,学习率较小时,收敛到极值的速度较慢; 学习率较大时,容易在搜索过程中发生震荡。
momentum (float, 可选) – 动量因子,默认为0,即采用指数平均的权重系数,默认不采用。
weight_decay (float, 可选) –  
dampening (float, 可选) –  
nesterov (bool, 可选) –  
"""
class torch.optim.SGD(params, lr=, momentum=0, dampening=0, weight_decay=0, nesterov=False)

   举个例子:

import torch

optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
optimizer.zero_grad()  # 每个参数对应的 grad 属性清 0
loss_fn(model(input), target).backward()
optimizer.step()       # 进行参数更新

 

posted @ 2020-11-30 09:44  _yanghh  阅读(446)  评论(0编辑  收藏  举报