博客
关于我
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 basic programs
查看>>
python bert_gen.py 报错Unable to load weights from pytorch checkpoint file for......
查看>>
python binascii.Error: Incorrect padding
查看>>
Python bool() 函数能否为无效参数引发异常?
查看>>
Python C 程序子进程在“for line in iter“处挂起
查看>>
Python Celery:自动化测试平台定时任务必备的三方库
查看>>
python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令
查看>>
Python CONNECT 4 CHECK WIN函数
查看>>
python cos,Python cos(90)和cos(270)不是0
查看>>
python进阶(4):Python 脚本文件重启自身进程
查看>>
python ctypes库中动态链接库加载方式
查看>>
python cv2 图像( np array )转 HObject
查看>>
python进阶(3):文件操作
查看>>
python cv2截取不规则区域图片
查看>>
python CV2裁剪图片并保存
查看>>
python进阶(2):pyecharts使用
查看>>
python cv2读取rtsp实时码流按时生成连续视频文件
查看>>
Python Dataframe Groupby Mean和Std
查看>>
python datetime
查看>>
python datetime笔记
查看>>