pytorch 多元回归
时间: 2023-10-02 12:09:31 浏览: 149
基于pytorch的多元线性回归模型.zip
5星 · 资源好评率100%
在 PyTorch 中进行多元回归可以通过构建一个具有多个输入和一个输出的神经网络模型来实现。下面是一个简单的示例代码:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义多元回归模型
class RegressionModel(nn.Module):
def __init__(self, input_size, output_size):
super(RegressionModel, self).__init__()
self.linear = nn.Linear(input_size, output_size)
def forward(self, x):
out = self.linear(x)
return out
# 数据集(假设有3个特征和1个目标)
input_data = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=torch.float32)
target_data = torch.tensor([[4], [7], [10]], dtype=torch.float32)
# 定义模型参数
input_size = 3
output_size = 1
# 实例化模型
model = RegressionModel(input_size, output_size)
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练模型
num_epochs = 1000
for epoch in range(num_epochs):
# 前向传播
outputs = model(input_data)
loss = criterion(outputs, target_data)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# 打印训练后的参数
print('Trained Parameters:')
for name, param in model.named_parameters():
if param.requires_grad:
print(name, param.data)
```
在上面的代码中,我们首先定义了一个继承自 `nn.Module` 的多元回归模型,并在其 `forward` 方法中定义了线性层。然后我们定义了输入数据和目标数据,并实例化模型、定义损失函数和优化器。接下来,我们进行了模型的训练,通过多次迭代计算前向传播和反向传播来更新模型参数。最后,我们打印出训练后的参数。
这只是一个简单的示例,你可以根据自己的数据和问题进行相应的修改和扩展。希望对你有帮助!
阅读全文