Bootstrap

torch.optim.SGD参数详解(除nesterov)

torch.optim.SGD

torch.optim.SGD(params, lr=<required parameter>, momentum=0, dampening=0, weight_decay=0, nesterov=False):随机梯度下降

  • 【我的理解】虽然叫做“随机梯度下降”,但是本质上还是还是实现的批量梯度下降,即用全部样本梯度的均值更新可学习参数。

    这里所说的全部样本可以是全部数据集,也可以是一个batch,为什么这么说?因为计算梯度是调用backward函数计算的,而backward函数又是通过损失值张量调用的,损失值的计算和样本集的选取息息相关。如果每次都使用全部样本计算损失值,那么很显然调用SGD时也就是用全部的样本梯度的均值去更新可学习参数,如果每次使用一个batch的样本计算损失值,再调用backward,那么调用SGD时就会用这个batch的梯度均值更新可学习参数。

  • params:要训练的参数,一般我们传入的都是model.parameters()

  • lr:learning_rate学习率,会梯度下降的应该都知道学习率吧,也就是步长。

  • weight_decay(权重衰退)和learning_rate(学习率)的区别

    learning_rate就是我们熟知的更新权重的方式,假设可学习参数为

;