博客
关于我
Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()
阅读量:805 次
发布时间: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 | doit,一个非常实用的 Python 库!
查看>>
python | easyocr,一个超厉害的 关于OCR的 Python 库!
查看>>
python | fastFM,一个高级的 Python 库!
查看>>
python | feature_engine,一个实用的 Python 库!
查看>>
python | filelock,一个超酷的 Python 库!
查看>>
python | fire,一个强大的 Python 库!
查看>>
python | flanker,一个神奇的 Python 库!
查看>>
python | flower,一个强大的 Python 库!
查看>>
python | funcy,一个超强的 提供函数式编程工具 Python 库!
查看>>
python | ggplot,一个超强的 Python 库!
查看>>
python | grab,一个强大的 Python 库!
查看>>
python | gunicorn,一个非常实用的 Python 库!
查看>>
python | h5py,一个无敌的关于 HDF5 的 Python 库!
查看>>
python | huey,一个非常厉害的 任务调度 Python 库!
查看>>
python | hypothesis,一个有趣的 Python 库!
查看>>
python | Indico,一个超酷的 Python 库!
查看>>
python | isort,一个有趣的 自动整理导入语句 的Python 库!
查看>>
python | jinja,一个超酷的 Python 库!
查看>>
python | joblib,一个强大的 Python 库!
查看>>
python调用git bash_Python学习第70课-用Git Bash在命令行打开sublime
查看>>