博客
关于我
Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()
阅读量:802 次
发布时间: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/

你可能感兴趣的文章
SpringBoot中集成Redis实现对redis中数据的解析和存储
查看>>
pthread_create导致的程序崩溃
查看>>
ptyhon POSIX
查看>>
public private protected default小结
查看>>
PublicCMS怎么用金蝶Apusic Application Server部署
查看>>
publish over ssh、 Kubernetes Continuous Deploy插件
查看>>
PubMed详解-ChatGPT4o作答
查看>>
Pubsub Extensions for Smack
查看>>
pulsar mq 单体验证demo, docker启动pulsar mq验证生产者消费者命令
查看>>
pulsar mq 学习使用,pulsar java客户端, spring boot pulsar , spring pulsarTemplate如何使用 pulsar4.0.0
查看>>
Pulsar mq 设置延迟消息模式 pulsar mq 发送延迟消息 pulsar如何发送消费延时消息
查看>>
Pulsar 游标回滚,移动偏移量测试
查看>>
pulsar开源消息队列_了解Pulsar---Pulsar工作笔记001
查看>>
Puppet 在大规模分布式系统中的性能优化策略有哪些?
查看>>
puppet 学习总结(1)——puppet 入门详解
查看>>
puppet 集中化管理PDF by 守住
查看>>
Puppet---自动化运维工具(进阶)
查看>>
puppeteer(三)常用API
查看>>
PyTorch 微调终极指南:第 2 部分 — 提高模型准确性
查看>>
pure css做的手机页面
查看>>