Pytorch中多种优化器比较
发布时间:2024-07-29 16:05
|
阅读量:
在 PyTorch 中,使用 Adam 优化器可以很方便地实现模型的参数优化。
首先,需要导入 torch.optim 库,该库提供了多种优化器,包括 Adam。然后,创建一个 Adam 优化器对象并将模型的参数传递给它。
以下是一个使用 Adam 优化器的示例代码:
```
import torch
import torch.optim as optim
# 定义一个模型
class MyModel(torch.nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.linear=torch.nn.Linear(10, 1)
def forward(self, x):
return self.linear(x)
# 创建一个模型实例
model=MyModel()
# 定义损失函数和优化器
criterion=torch.nn.MSELoss()
optimizer=optim.Adam(model.parameters(), lr=0.001)
# 训练模型
for epoch in range(10):
optimizer.zero_grad() # 每次迭代前清零梯度
output=model(torch.randn(10))
loss=criterion(output, torch.randn(1))
loss.backward()
optimizer.step() # 执行梯度更新
```
在上面的代码中,我们首先定义了一个简单的模型 MyModel,然后创建了一个模型实例 model。接着,定义了损失函数 criterion 和 Adam 优化器 optimizer,其中模型的参数通过 model.parameters() 方法传递给了优化器。在训练模型的过程中,我们需要在每次迭代前清零梯度(optimizer.zero_grad()),然后计算损失并反向传播(loss.backward()),最后执行梯度更新(optimizer.step())。