Company dynamics

Pytorch自定义优化器Optimizer简单总结(附AdamW代码分析)

PyTorch 中,可以使用 `torch.optim.AdamW` 类来实现 AdamW 优化器AdamW 是一种基于梯度的优化算法,它在 Adam 优化器的基础上加入了权重衰减 (weight decay) 的机制,用于控制模型参数的正则化。 下面是一个简单的示例,展示了如何在 PyTorch 中使用 AdamW 优化器: ```python import torch import torch.nn as nn import torch.optim as optim # 定义模型 class MyModel(nn.Module): def __init__(self): super(MyModel, self).__init__() self.fc=nn.Linear(10, 1) def forward(self, x): return self.fc(x) # 创建模型和数据 model=MyModel() data=torch.randn(10, 10) target=torch.randn(10, 1) # 定义损失函数和优化器 criterion=nn.MSELoss() optimizer=optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01) # 训练模型 for epoch in range(100): # 前向传播 output=model(data) loss=criterion(output, target) # 反向传播和梯度更新 optimizer.zero_grad() loss.backward() optimizer.step() # 打印损失 print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}") ``` 在上述示例中,我们首先创建了一个自定义的模型 `MyModel`,然后定义了输入数据和目标数据。接着,我们定义了损失函数 `nn.MSELoss()` 和优化器 `optim.AdamW`。在训练过程中,我们通过调用优化器的 `zero_grad()` 方法来清空之前的梯度,然后进行前向传播、计算损失、反向传播和梯度更新。 需要注意的是,在创建 `optim.AdamW` 优化器时,我们传递了模型的参数 `model.parameters()`,以及学习率 `lr` 和权重衰减 `weight_decay`。你可以根据具体需求调整这些参数。 希望这个示例能帮助你理解如何在 PyTorch 中使用 AdamW 优化器。如果你有进一步的问题,请随时提问。

平台注册入口