SGD优化器和学习率自动调整python代码
时间: 2024-09-23 17:15:02 浏览: 50
SGD (Stochastic Gradient Descent) 是一种常用的梯度下降优化算法,用于机器学习模型训练过程中更新权重。它通过随机选择一部分数据样本来计算损失函数的梯度,然后沿着这个方向做更新。在Python中,特别是在深度学习库如TensorFlow和PyTorch中,我们可以使用内置的优化器模块来应用SGD。
对于学习率自动调整,常见的策略有固定学习率、衰减式学习率(如Exponential Decay或Step Decay)、自适应学习率(如Adagrad、RMSprop、Adam等)。下面是一个简单的例子,展示如何在PyTorch中使用SGD优化器,并设置一个基于指数衰减的学习率:
```python
import torch
from torch.optim import SGD
# 创建一个模型
model = ... # 假设已经定义好的模型
# 定义初始参数和学习率
learning_rate = 0.1
optimizer = SGD(model.parameters(), lr=learning_rate, momentum=0.9) # 可以添加动量参数
# 模拟一个迭代过程(假设`train_loader`是数据加载器)
for epoch in range(num_epochs):
for batch_data, batch_labels in train_loader:
optimizer.zero_grad() # 梯度清零
output = model(batch_data) # 前向传播
loss = criterion(output, batch_labels) # 计算损失
loss.backward() # 反向传播
optimizer.step() # 更新参数
learning_rate *= decay_rate # 自动衰减学习率
阅读全文