在前几个教程中,我们处理的是单输出的多线性回归,在这里我们将探讨如何将多线性回归用于多目标预测。复杂的神经网络架构本质上是让每个神经元单元独立地执行线性回归,然后将其结果传递给另一个神经元。因此,了解这种回归的工作原理对于理解神经网络如何执行多目标预测很有用。
本文的目的是提供一个在PyTorch中实现多目标预测的分步指南。我们将通过线性回归模型框架来实现,该模型接受多个特征作为输入并产生多个结果。
我们将从导入模型所需的包开始。然后,我们将定义输入数据点以及我们希望通过模型实现的目标。特别是,我们将演示
- 如何理解多维度的多线性回归。
- 如何在PyTorch中使用多线性回归进行多目标预测。
- 如何在PyTorch中使用“nn.Module”构建类线性。
- 如何使用单个输入数据样本进行多目标预测。
- 如何使用多个输入数据样本进行多目标预测。
请注意,在本教程中我们不会训练我们的MLR模型,我们只会看它是如何进行简单预测的。在我们PyTorch系列的后续教程中,我们将学习如何在一个数据集上训练这个模型。
通过我的《用PyTorch进行深度学习》一书来启动你的项目。它提供了包含可用代码的自学教程。
让我们开始吧。

PyTorch中的多目标多线性回归预测。
图片由 Dan Gold 提供。保留部分权利。
概述
本教程分为三个部分;它们是
- 创建模块
- 使用单个输入样本进行预测
- 使用多个输入样本进行预测
创建模块
我们将为多线性回归模型构建一个自定义的线性类。我们将定义一个线性类,并使其成为PyTorch包nn.Module
的子类。该类继承了该包的所有方法和属性,例如nn.Linear
。
1 2 3 4 5 6 7 8 9 10 11 |
import torch torch.manual_seed(42) # 定义多线性回归类 class MLR(torch.nn.Module): def __init__(self, input_dim, output_dim): super().__init__() self.linear = torch.nn.Linear(input_dim, output_dim) def forward(self,x): y_pred = self.linear(x) return y_pred |
现在,让我们创建模型对象并相应地定义参数。正如我们计划进行多目标预测一样,让我们首先看看我们的模型如何处理单个输入样本。稍后,我们将对多个输入样本进行预测。
使用单个输入样本进行预测
我们将创建我们的模型对象,该对象接受单个输入样本并进行五个预测。
1 2 3 |
... # 构建模型对象 model = MLR(1, 5) |
现在,让我们定义模型的输入张量x
并进行预测。
1 2 3 4 5 |
... # 定义单个输入样本'x'并进行预测 x = torch.tensor([[2.0]]) y_pred = model(x) print(y_pred) |
输出看起来是这样的。
1 2 |
tensor([[ 1.7309, 1.1732, 0.1187, 2.7188, -1.1718]], grad_fn=<AddmmBackward0>) |
正如你所见,我们的模型仅凭一个输入样本就做出了多个预测。以下是我们如何列出模型参数。
1 2 |
... print(list(model.parameters())) |
输出如下:
1 2 3 4 5 6 7 8 |
[参数包含 tensor([[ 0.7645], [ 0.8300], [-0.2343], [ 0.9186], [-0.2191]], requires_grad=True), 参数包含 tensor([ 0.2018, -0.4869, 0.5873, 0.8815, -0.7336], requires_grad=True)] |
你可能会得到不同的结果,因为这些是随机权重,但权重张量的形状将与我们设计的一个输入和五个输出相匹配。
想开始使用PyTorch进行深度学习吗?
立即参加我的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
使用多个输入样本进行预测
同样,让我们定义一个用于多个输入样本的张量X
,其中每一行代表一个数据样本。
1 2 |
# 定义多个输入张量'x'并进行预测 X = torch.tensor([[2.0],[4.0],[6.0]]) |
我们可以用多个输入样本进行多目标预测。
1 2 3 |
... Y_pred = model(X) print(Y_pred) |
由于我们有三个输入样本,我们应该看到三个输出样本,如下所示:
1 2 3 4 |
tensor([[ 1.7309, 1.1732, 0.1187, 2.7188, -1.1718], [ 3.2599, 2.8332, -0.3498, 4.5560, -1.6100], [ 4.7890, 4.4932, -0.8184, 6.3932, -2.0482]], grad_fn=<AddmmBackward0>) |
把所有东西放在一起,下面是完整的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import torch torch.manual_seed(42) # 定义多线性回归类 class MLR(torch.nn.Module): def __init__(self, input_dim, output_dim): super().__init__() self.linear = torch.nn.Linear(input_dim, output_dim) def forward(self,x): y_pred = self.linear(x) return y_pred # 构建模型对象 model = MLR(1, 5) # 定义单个输入样本'x'并进行预测 x = torch.tensor([[2.0]]) y_pred = model(x) print(y_pred) print(list(model.parameters())) # 定义多个输入张量'x'并进行预测 X = torch.tensor([[2.0],[4.0],[6.0]]) Y_pred = model(X) print(Y_pred) |
总结
在本教程中,您学习了如何使用多线性回归模型进行多目标预测。特别是,您学到了:
- 如何理解多维度的多线性回归。
- 如何在PyTorch中使用多线性回归进行多目标预测。
- 如何在PyTorch中使用“nn.Module”构建类线性。
- 如何使用单个输入数据样本进行多目标预测。
- 如何使用多个输入数据样本进行多目标预测。
暂无评论。