在PyTorch中进行线性预测

线性回归是一种统计技术,用于估计两个变量之间的关系。线性回归的一个简单例子是根据一个人体重的平方根来预测身高(这正是 BMI 的基础)。为此,我们需要找到直线的斜率和截距。斜率是一个变量随另一个变量变化一个单位而变化的量。截距是我们的直线与 y 轴相交的位置。

让我们以简单的线性方程 $y=wx+b$ 为例。输出变量是 $y$,而输入变量是 $x$。方程的斜率和 y 截距由字母 $w$ 和 $b$ 表示,因此它们被称为方程的参数。知道这些参数可以让你预测任何给定 $x$ 值的输出 $y$。

现在您已经了解了简单线性回归的一些基础知识,让我们尝试在 PyTorch 框架中实现这个有用的算法。在这里,我们将重点关注以下几点:

  • 什么是线性回归以及如何在 PyTorch 中实现它。
  • 如何在 PyTorch 中导入线性类并使用它进行预测。
  • 我们如何为线性回归问题或未来更复杂的模型构建自定义模块。

通过我的《用PyTorch进行深度学习》一书来启动你的项目。它提供了包含可用代码自学教程


那么,让我们开始吧。

在 PyTorch 中进行线性预测。
图片来源:Daryan Shamkhali。保留部分权利。

概述

本教程分为三个部分;它们是

  • 准备张量
  • 使用 PyTorch 的线性类
  • 构建自定义线性类

准备张量

请注意,在本教程中,我们将介绍只有两个参数的一维线性回归。我们将创建以下线性表达式:

$$y=3x+1$$

我们将在 PyTorch 中将参数 $w$ 和 $b$ 定义为张量。我们将 `requires_grad` 参数设置为 `True`,表示我们的模型必须学习这些参数。

在 PyTorch 中,预测步骤称为前向步骤。因此,我们将编写一个函数,允许我们在任何给定 $x$ 值下对 $y$ 进行预测。

现在我们已经定义了线性回归函数,让我们在 $x=2$ 处进行预测。

输出如下:

我们还用多个 $x$ 输入来评估方程。

输出如下:

如您所见,线性方程函数成功预测了多个 $x$ 值的输出。

总而言之,这是完整的代码

想开始使用PyTorch进行深度学习吗?

立即参加我的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

使用 PyTorch 的线性类

为了解决实际问题,您需要构建更复杂的模型,为此,PyTorch 提供了许多有用的包,包括允许我们进行预测的线性类。以下是如何从 PyTorch 导入线性类模块。我们还将随机初始化参数。

请注意,之前我们定义了 $w$ 和 $b$ 的值,但在实践中,它们在机器学习算法开始之前是随机初始化的。

让我们创建一个线性对象模型,并使用 `parameters()` 方法访问模型的参数 ($w$ 和 $b$)。`Linear` 类使用以下参数初始化:

  • in_features:反映每个输入样本的大小
  • out_features:反映每个输出样本的大小

输出如下:

同样,您可以使用 `state_dict()` 方法获取包含参数的字典。

输出如下:

现在我们可以重复我们之前所做的。让我们使用单个 $x$ 值进行预测。

这得到

这对应于 $0.5153 \times 2 - 0.4414 = 0.5891$。类似地,我们将对多个 $x$ 值进行预测。

输出如下:

将所有内容放在一起,完整的代码如下:

构建自定义线性类

PyTorch 提供了构建自定义线性类的可能性。对于后续的教程,我们将使用这种方法来构建更复杂的模型。让我们首先从 PyTorch 导入 `nn` 模块,以构建自定义线性类。

PyTorch 中的自定义模块是派生自 `nn.Module` 的类。我们将为简单的线性回归构建一个类,并将其命名为 `Linear_Regression`。这应该使其成为 `nn.Module` 的子类。因此,所有方法和属性都将继承到此中。在对象构造函数中,我们将声明输入和输出参数。此外,我们创建一个超构造函数,从 `nn.Module` 调用线性类。最后,为了从输入样本生成预测,我们将在类中定义一个前向函数。

现在,让我们创建一个简单的线性回归模型。在这种情况下,它将仅仅是一个直线方程。为了进行健全性检查,我们还将打印出模型参数。

输出如下:

正如我们在本教程的早期部分所做的那样,我们将评估我们的自定义线性回归模型,并尝试预测 $x$ 的单个和多个输入值。

输出如下:

这对应于 $-0.1939 \times 2 + 0.4694 = 0.0816$。如您所见,我们的模型能够预测结果,并且结果是一个张量对象。同样,让我们尝试获取多个 $x$ 值的预测。

输出如下:

因此,该模型对于多个 $x$ 值也表现良好。

把所有东西放在一起,下面是完整的代码。

总结

在本教程中,我们讨论了如何从头开始构建神经网络,从简单的线性回归模型开始。我们探索了在 PyTorch 中实现简单线性回归的多种方法。特别是,我们学习了

  • 什么是线性回归以及如何在 PyTorch 中实现它。
  • 如何在 PyTorch 中导入线性类并使用它进行预测。
  • 我们如何为线性回归问题或未来更复杂的模型构建自定义模块。

开始使用PyTorch进行深度学习!

Deep Learning with PyTorch

学习如何构建深度学习模型

...使用新发布的PyTorch 2.0库

在我的新电子书中探索如何实现
使用 PyTorch进行深度学习

它提供了包含数百个可用代码自学教程,让你从新手变成专家。它将使你掌握:
张量操作训练评估超参数优化等等...

通过动手练习开启你的深度学习之旅


查看内容

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。