帮我写一个python代码:利用pytorch顺序结构实现梯度下降拟合线性回归
时间: 2024-12-04 21:30:23 浏览: 12
当然可以。首先,我们需要安装PyTorch库,如果你还没有安装,可以使用`pip install torch`命令。接下来是一个简单的Python代码示例,使用PyTorch实现线性回归模型并使用梯度下降法进行训练:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 创建数据 (这里我们用随机数据简化例子)
torch.manual_seed(0) # 设置随机种子为了得到一致的结果
X = torch.randn(100, 1) # 随机输入特征
y = 2 * X + 0.5 * torch.randn(100, 1) # 线性函数生成目标值,加上一些噪声
class LinearRegression(nn.Module):
def __init__(self, input_dim):
super(LinearRegression, self).__init__()
self.linear = nn.Linear(input_dim, 1)
def forward(self, x):
return self.linear(x)
model = LinearRegression(1) # 初始化模型,输入维度为1
criterion = nn.MSELoss() # 使用均方误差作为损失函数
optimizer = optim.SGD(model.parameters(), lr=0.01) # 使用SGD优化器,学习率设为0.01
def train():
model.train()
optimizer.zero_grad() # 梯度清零
y_pred = model(X) # 前向传播预测
loss = criterion(y_pred, y) # 计算损失
loss.backward() # 反向传播求梯度
optimizer.step() # 更新参数
for epoch in range(1000): # 进行多次迭代训练
train()
# 打印当前损失值
if (epoch+1) % 100 == 0:
print(f"Epoch {epoch+1}: Loss: {loss.item()}")
# 输出最终模型参数
print("Final Parameters:")
for name, param in model.named_parameters():
print(f"{name}: {param.item()}")
```
阅读全文