PyTorch Handbook

224课时
3.1K学过
8分

10. CNN:MNIST数据集手写数字识别

11. RNN实例:通过Sin预测Cos

课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
5分钟

更新权重

在实践中最简单的权重更新规则是随机梯度下降(SGD):

``weight = weight - learning_rate * gradient``

我们可以使用简单的Python代码实现这个规则:

learning_rate = 0.01
for f in net.parameters():
    f.data.sub_(f.grad.data * learning_rate)

但是当使用神经网络是想要使用各种不同的更新规则时,比如SGD、Nesterov-SGD、Adam、RMSPROP等,PyTorch中构建了一个包torch.optim实现了所有的这些规则。 使用它们非常简单:

In [11]:

import torch.optim as optim

# create your optimizer
optimizer = optim.SGD(net.parameters(), lr=0.01)

# in your training loop:
optimizer.zero_grad()   # zero the gradient buffers
output = net(input)
loss = criterion(output, target)
loss.backward()
optimizer.step()    # Does the update

.. 注意::

观察如何使用``optimizer.zero_grad()``手动将梯度缓冲区设置为零。 这是因为梯度是按Backprop部分中的说明累积的。

In [ ]: