optim.SGD()函数的用法
时间: 2023-09-26 07:10:31 浏览: 78
optim.SGD()函数是PyTorch中用于实现随机梯度下降(Stochastic Gradient Descent,SGD)优化算法的优化器。
该函数的常见用法如下:
```python
import torch
import torch.optim as optim
# 创建模型和优化器
model = torch.nn.Linear(10, 2)
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9, weight_decay=0.001)
# 在训练过程中使用优化器
optimizer.zero_grad() # 梯度清零
loss = model(x, y) # 计算损失
loss.backward() # 反向传播计算梯度
optimizer.step() # 更新参数
```
在上述代码中,首先创建了一个模型和一个SGD优化器。使用`optim.SGD()`函数时,需要传入模型的参数`model.parameters()`以及一些可选参数,如学习率`lr`、动量(momentum)和权重衰减(weight decay)等。
在训练过程中,可以使用optimizer对象进行优化器的相关操作。通常的步骤是先将梯度清零(`optimizer.zero_grad()`),然后计算损失(`loss = model(x, y)`),接着进行反向传播计算梯度(`loss.backward()`),最后使用`optimizer.step()`来更新模型的参数。
需要注意的是,SGD优化器还支持一些其他的可选参数,如学习率衰减、Nesterov动量等。可以根据具体需求进行参数设置。
除了SGD优化器,PyTorch还提供了其他优化器,如Adam、Adagrad等。它们具有不同的优化策略,可以根据实际情况选择最适合的优化器。
这样,可以方便地使用optim.SGD()函数创建SGD优化器,并结合模型进行参数更新,从而进行模型的训练和优化。
阅读全文