博客
关于我
Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()
阅读量:804 次
发布时间:2023-03-05

本文共 851 字,大约阅读时间需要 2 分钟。

我们认为数组、矩阵、张量都是有形状的,形状可以用像 (2×2×3) 这样的标签来描述。按照从左到右的顺序,第0维、第1维、第2维等依次代表不同的维度。在PyTorch中,我们可以通过切片操作来观察不同维度下的数据。例如,a[1] 可以提取第0维视角下的第1个元素组,而 a[:,:,0] 则可以查看第2维视角下的第0个元素组。

此外,PyTorch 提供了 .unsqueeze 方法,可以在指定的任意维度(如 0、1、2)中插入一个新的空隙。例如,b = a.unsqueeze(2) 会在第2维中插入一个新维度,结果的张量尺寸变为 (2,2,1,3)。这种操作类似于某些编程语言(如 Python 和 MATLAB)中的广播机制,但在这里扩展的是张量的维度结构。

让我们通过一个具体的例子来理解这一点。假设我们有一个 (2×3) 的张量 a,在第0维视角下,它包含两组数据:[1, 2, 3][4, 5, 6]。当我们使用 .unsqueeze(1) 对其进行操作时,结果是一个 (2×1×3) 的张量,这相当于在第1维中添加了一层包装,形成了一个两层的结构。从第0维视角来看,每个原来的元素组都被包装在一个单独的子张量中,形成 [[[1,2,3]], [[4,5,6]]]

同样地,当我们使用 .unsqueeze(2) 时,原来的每个元素都会被进一步包装,形成一个 (2×3×1) 的张量。从第2维视角来看,每个原来的元素都变成了一个独立的子张量,结果为 [[[1],[2],[3]], [[4],[5],[6]]]

这种“套箱”的思想可以帮助我们更直观地理解张量的维度结构。通过不断地在各个维度中插入空隙,我们可以一步步扩展张量的形状。这种操作不仅有助于数据的重新排列,也为后续的高维操作提供了基础。

通过上述例子可以看出,PyTorch 的张量操作通过在各维度中插入空隙的方式,实现了对数据结构的灵活控制。这类似于某些编程语言中的广播机制,但其核心目标是对张量的高维操作进行支持。

转载地址:http://bbafk.baihongyu.com/

你可能感兴趣的文章
Python REST(Web 服务)框架的推荐?
查看>>
Python rsa 加密
查看>>
Python RSA操作
查看>>
Python轻松实现统计学中重要的相关性分析
查看>>
Python scrapy 常见问题及解决 【遇到的坑】
查看>>
Python Seborn热图数据的动态更新
查看>>
Python Seborn绘制空白直方图
查看>>
Python Selenium - 获取href值
查看>>
Python Selenium实现自动化测试及Chrome驱动使用!
查看>>
Python Selenium搭建UI自动化测试框架
查看>>
Python Selenium模块详解
查看>>
Python selenium爬取影评生成词云图
查看>>
python selenium自动化测试报告
查看>>
Python selenium自动化测试框架实战 —— 登录测试案例
查看>>
Python Selenium设计模式 —— POM
查看>>
Python Serial:如何使用 read 或 readline 函数一次读取多个字符
查看>>
Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
查看>>
Python setup.py:数据文件无法复制目录:不存在或不是常规文件
查看>>
Python setuptools sdist:仅安装版本化文件
查看>>
Python Shell下使用matplotlib
查看>>