Pytorch中的二维张量

二维张量类似于二维矩阵。与二维矩阵一样,二维张量也具有 $n$ 行 $n$ 列。

我们以一张灰度图像为例,它是一个二维数值矩阵,通常称为像素。每个数字的范围从“0”到“255”,代表一个像素强度值。其中,最低强度值(“0”)表示图像中的黑色区域,而最高强度值(“255”)表示图像中的白色区域。使用 PyTorch 框架,可以将此二维图像或矩阵转换为二维张量。

在上一篇文章中,我们学习了 PyTorch 中的一维张量并应用了一些有用的张量操作。在本教程中,我们将使用 PyTorch 库将这些操作应用于二维张量。具体来说,我们将学习:

  • 如何在 PyTorch 中创建二维张量并探索它们的类型和形状。
  • 详细了解二维张量的切片和索引操作。
  • 如何对张量应用多种方法,例如张量加法、乘法等。

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


让我们开始吧。

Pytorch中的二维张量
图片作者 dylan dolte。保留部分权利。

教程概述

本教程分为以下几个部分:

  • 二维张量的类型和形状
  • 将二维张量转换为 NumPy 数组
  • 将 pandas Series 转换为二维张量
  • 二维张量的索引和切片操作
  • 二维张量上的操作

二维张量的类型和形状

首先,让我们导入本教程中将使用的一些必要库。

为了检查二维张量的类型和形状,我们将使用 PyTorch 中之前介绍过的一维张量的相同方法。但是,它应该像处理一维张量那样工作吗?

让我们通过将整数的二维列表转换为二维张量对象来演示。作为示例,我们将创建一个二维列表并应用 torch.tensor() 进行转换。

如您所见,torch.tensor() 方法也适用于二维张量。现在,让我们使用 shape()size()ndimension() 方法来返回张量对象的形状、大小和维度。

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

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

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

将二维张量转换为 NumPy 数组

PyTorch 允许我们将二维张量转换为 NumPy 数组,然后再转换回张量。让我们看看如何做到这一点。

将 Pandas Series 转换为二维张量

同样,我们也可以将 pandas DataFrame 转换为张量。与一维张量一样,我们将使用相同的步骤进行转换。使用 values 属性,我们将获得 NumPy 数组,然后使用 torch.from_numpy,它允许您将 pandas DataFrame 转换为张量。

我们将这样做:

二维张量的索引和切片操作

对于索引操作,可以使用方括号访问张量对象中的不同元素。您可以简单地在方括号中输入相应的索引来访问张量中所需的元素。

在下面的示例中,我们将创建一个张量并使用两种不同的方法访问某些元素。请注意,索引值应始终比元素在二维张量中的位置少一。

如果我们需要同时访问两个或更多元素呢?这就是张量切片发挥作用的地方。让我们使用前面的示例来访问第二行的前两个元素和第三行的前三个元素。

二维张量上的操作

虽然您可以使用 PyTorch 框架对二维张量执行许多操作,但在这里,我们将向您介绍张量加法以及标量和矩阵乘法。

二维张量加法

两个张量相加类似于矩阵加法。这是一个非常直接的过程,您只需使用加法 (+) 运算符即可执行操作。让我们在下面的示例中添加两个张量。

二维张量的标量和矩阵乘法

二维张量中的标量乘法也与矩阵中的标量乘法相同。例如,通过将张量乘以一个标量(例如标量 4),您将张量中的每个元素乘以 4。

谈到二维张量的乘法,PyTorch 中的 torch.mm() 使事情变得更容易。与线性代数中的矩阵乘法类似,张量对象 A 的列数(即 2×3)必须等于张量对象 B 的行数(即 3×2)。

进一步阅读

PyTorch 与 TensorFlow 同时开发,直到 TensorFlow 在其 2.x 版本中采用 Keras,PyTorch 的语法才变得更简单。要学习 PyTorch 的基础知识,您可能需要阅读 PyTorch 教程:

特别是 PyTorch 张量的基础知识可以在张量教程页面找到:

还有一些适合初学者的 PyTorch 书籍。建议阅读最近出版的书籍,因为工具和语法正在积极发展。一个例子是:

总结

在本教程中,您了解了 PyTorch 中的二维张量。

具体来说,你学到了:

  • 如何在 PyTorch 中创建二维张量并探索它们的类型和形状。
  • 详细了解二维张量的切片和索引操作。
  • 如何对张量应用多种方法,例如张量加法、乘法等。

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

Deep Learning with PyTorch

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

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

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

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

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


查看内容

PyTorch 中的二维张量 的 8 条回复

  1. Will Li 2022 年 4 月 12 日上午 11:30 #

    感谢您的文章。不过,我建议您仔细检查本文中输出的显示,因为至少有两个地方显示的是输入而不是输出。

    • James Carmichael 2022 年 4 月 14 日凌晨 2:47 #

      感谢您的反馈,Will!

  2. Prakriti 2022 年 7 月 12 日凌晨 1:07 #

    非常感谢。我是一名初学者,这篇文章帮助很大。

    • James Carmichael 2022 年 7 月 12 日上午 9:05 #

      非常欢迎您,Prakriti!我们非常感谢您的反馈和支持!

      • Alger 2022 年 11 月 21 日下午 1:23 #

        我有一个问题想问,我使用 1000 个 64×64 的矩阵作为输入,输出也是 64×64 的矩阵,可以实现吗?

  3. Alger 2022 年 11 月 21 日下午 12:59 #

    我有一个问题想问,我使用 1000 个 64×64 的矩阵作为输入,输出也是 64×64 的矩阵,可以实现吗?谢谢。

  4. pan xinghai 2022 年 11 月 21 日下午 1:36 #

    我有一个问题想问,我使用 1000 个 64×64 的矩阵作为输入,输出也是 64×64 的矩阵,可以实现吗?

发表评论

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