给出一段python代码来教我如何使用pytorch的SGD优化器
时间: 2023-05-21 13:05:47 浏览: 241
可以尝试以下代码:
import torch
import torch.optim as optim
# 定义一个模型
model = torch.nn.Linear(10, 1)
loss_fn = torch.nn.MSELoss(reduction='sum')
# 生成一些随机数据
data = torch.randn(100, 10)
targets = torch.randn(100, 1)
# 定义SGD优化器,并设置学习率和动量参数
learning_rate = 0.01
momentum = 0.9
optimizer = optim.SGD(model.parameters(), lr=learning_rate, momentum=momentum)
# 开始训练
for epoch in range(100):
# 前向传播
y_pred = model(data)
loss = loss_fn(y_pred, targets)
# 反向传播
optimizer.zero_grad()
loss.backward()
# 更新参数
optimizer.step()
# 打印训练进展
if epoch % 10 == 0:
print('Epoch:', epoch, 'Loss:', loss.item())
这段代码演示了如何在PyTorch中使用SGD优化器来训练一个简单的线性模型。关键的部分是optimizer的定义和后续的optimizer.step(),其中optimizer.zero_grad()用来清空梯度缓存,loss.backward()用来计算梯度,optimizer.step()用来更新参数。
阅读全文