二元一次线性回归pytorch代码
时间: 2023-09-16 18:14:37 浏览: 95
下面是使用PyTorch进行二元一次线性回归的代码示例:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义数据
x1 = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float32)
x2 = torch.tensor([2, 4, 6, 8, 10], dtype=torch.float32)
y = torch.tensor([3, 5, 7, 9, 11], dtype=torch.float32)
# 定义模型
class LinearRegression(nn.Module):
def __init__(self):
super(LinearRegression, self).__init__()
self.linear = nn.Linear(2, 1) # 输入特征维度为2,输出特征维度为1
def forward(self, x):
out = self.linear(x)
return out
model = LinearRegression()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练模型
num_epochs = 1000
for epoch in range(num_epochs):
inputs = torch.stack([x1, x2], dim=1) # 将两个自变量堆叠在一起
outputs = model(inputs)
loss = criterion(outputs.squeeze(), y) # 计算损失
optimizer.zero_grad()
loss.backward()
optimizer.step()
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# 打印模型参数
print("模型参数:")
for name, param in model.named_parameters():
if param.requires_grad:
print(name, param.data)
# 使用模型进行预测
test_input = torch.tensor([[6, 12]], dtype=torch.float32)
predicted = model(test_input)
print("预测结果:", predicted.item())
```
在这个示例中,我们首先定义了输入变量x1和x2,以及对应的目标变量y。然后,我们定义了一个继承自nn.Module的线性回归模型,并在模型的forward方法中定义了模型的计算流程。接着,我们定义了损失函数和优化器。在训练过程中,我们使用最小均方误差作为损失函数,并使用随机梯度下降(SGD)作为优化器。最后,我们通过迭代训练模型,并输出训练过程中的损失值。最后,我们使用训练好的模型进行预测,并输出预测结果。
请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体情况进行修改和调整。
阅读全文