帮我写个使用pytorch在PyThon中实现梯度下降法求最小值的代码
时间: 2024-12-04 16:29:41 浏览: 16
当然可以。在PyTorch中,你可以使用`autograd`库来自动计算梯度并实现梯度下降法。以下是一个简单的例子,假设我们有一个函数(如线性回归的损失函数)和一些随机初始化的权重参数,我们将演示如何使用SGD(随机梯度下降)找到局部最小值:
```python
import torch
import torch.optim as optim
# 创建一个简单的函数作为优化目标
def quadratic_function(x):
return (x - 3)**2 + 5
# 初始化随机参数
w = torch.tensor([0.0], requires_grad=True) # 假设只有一个权重参数
learning_rate = 0.1 # 学习率
# 定义优化器
optimizer = optim.SGD([w], lr=learning_rate)
# 设置最大迭代次数
max_iterations = 100
for i in range(max_iterations):
# 前向传播
loss = quadratic_function(w)
# 反向传播并更新参数
optimizer.zero_grad() # 清零梯度
loss.backward() # 计算梯度
optimizer.step() # 更新参数
# 输出当前迭代的信息
if i % 10 == 0:
print(f"Iteration {i}: Loss = {loss.item():.4f}, w = {w.item():.4f}")
阅读全文