adam优化器的代码
时间: 2024-06-15 16:02:01 浏览: 206
Adam (Adaptive Moment Estimation) 是一种常用的优化算法,结合了动量(momentum)和自适应学习率(adaptive learning rate)的优点。在深度学习中,特别是在训练神经网络时,Adam 是非常常见的选择。以下是 Adam 优化器的基本 Python 代码实现,使用 PyTorch 的例子:
```python
import torch.optim as optim
class AdamExample:
def __init__(self, parameters, lr=0.001, betas=(0.9, 0.999), eps=1e-8):
"""
使用 PyTorch 的 Adam 实例化
:param parameters: 需要优化的模型参数
:param lr: 学习率,默认为 0.001
:param betas: 动量参数,通常为 (beta1, beta2),默认为 (0.9, 0.999)
:param eps: 数值稳定性项,默认为 1e-8
"""
self.optimizer = optim.Adam(parameters, lr=lr, betas=betas, eps=eps)
def step(self):
"""
进行一次优化步骤
"""
self.optimizer.step()
def zero_grad(self):
"""
重置梯度
"""
self.optimizer.zero_grad()
# 使用示例
model.parameters() # 获取模型参数
optimizer = AdamExample(model.parameters()) # 初始化优化器
for epoch in range(num_epochs):
for batch in dataloader:
optimizer.zero_grad() # 在每个批次开始前清零梯度
loss = compute_loss(batch) # 计算损失
loss.backward() # 反向传播
optimizer.step() # 更新参数
```
阅读全文