pytorch tensor维度变换

目录

  • [1. view/reshape](#1. view/reshape)
  • [2. squeeze/unsqueeze](#2. squeeze/unsqueeze)
  • [3. expand 扩展](#3. expand 扩展)
  • [4. repeat](#4. repeat)
  • [5 .t转置](#5 .t转置)
  • [6. transpose](#6. transpose)
  • [7. permute](#7. permute)

1. view/reshape

view(*shape) → Tensor

作用:类似于reshape,将tensor转换为指定的shape,原始的data不改变。返回的tensor与原始的tensor共享存储区。返回的tensor的size和stride必须与原始的tensor兼容。每个新的tensor的维度必须是原始维度的子空间,或满足以下连续条件:

式1 张量连续性条件

否则需要先使用contiguous()方法将原始tensor转换为满足连续条件的tensor,然后就可以使用view方法进行shape变换了。或者直接使用reshape方法进行维度变换,但这种方法变换后的tensor就不是与原始tensor共享内存了,而是被重新开辟了一个空间。

torch.reshape(input, shape) → Tensor

与view方法类似,将输入tensor转换为新的shape格式。

但是reshape方法更强大,可以认为a.reshape = a.view() + a.contiguous().view()。

即:在满足tensor连续性条件时,a.reshape返回的结果与a.view()相同,否则返回的结果与a.contiguous().view()相同。

view/reshape的问题是会丢失维度信息,比如变化后的数据[4,784],而通过它是推不出原来的shape是[4,1,28*28]的,必须额外保存维度信息。

参考:【pytorch】view和reshape底层原理

2. squeeze/unsqueeze

unsqueeze增加维度,索引>=0时在索引之前插入,索引<0时,在索引之后插入

unsqueeze只改变维度不改变数据本身

实际应用的例子

squeeze减少维度,减少掉维度为1的维度,不输入参数时,它会减少掉所有能减掉的维度

3. expand 扩展

用于将张量中单数维的数据扩展到指定的size

只有维度是1的才可以扩展,当expand参数为-1时,保持原来的维度不扩展,负数其他值无意思。且扩展的Tensor不会分配新的内存,只是原来的基础上创建新的视图并返回,返回的张量内存是不连续的。类似于numpy中的broadcast_to函数的作用。如果希望张量内存连续,可以调用contiguous函数。

4. repeat

和expand()作用类似,均是将tensor扩展到新的形状

前文提及expand仅能作用于单数维,那对于非单数维的拓展,那就需要借助于repeat函数了。

tensor.repeat(sizes)参数 sizes指定了原始张量在各维度上复制的次数。整个原始张量作为一个整体进行复制,这与Numpy中的repeat函数截然不同,而更接近于tile函数的效果。

与expand不同,repeat函数会真正的复制数据并存放于内存中。repeat开辟了新的内存空间,torch.repeat返回的张量在内存中是连续的

5 .t转置

用于二维及以下的tensor转置

6. transpose

transpose方法的作用是交换矩阵的两个维度,transpose(dim0, dim1) → Tensor,transpose可能导致数据不连续,可调用.contiguous使数据变的连续

7. permute

torch.permute(input, dims) → Tensor

按照dims给定的dimension排列顺序,返回Tensor
t只用于二维及以下的tensor转置,transpose能操作2D矩阵的转置,在多维矩阵可以进行二维的转置,permute可对任意高维矩阵进行转置

相关推荐
零售ERP菜鸟15 分钟前
范式革命:从“信息化”到“数字化”的本质跃迁
大数据·人工智能·职场和发展·创业创新·学习方法·业界资讯
光羽隹衡17 分钟前
计算机视觉——Opencv(图像拼接)
人工智能·opencv·计算机视觉
SEO_juper33 分钟前
2026内容营销破局指南:告别流量内卷,以价值赢信任
人工智能·ai·数字营销·2026
初恋叫萱萱36 分钟前
数据即燃料:用 `cann-data-augmentation` 实现高效训练预处理
人工智能
一战成名9961 小时前
CANN 仓库揭秘:昇腾 AI 算子开发的宝藏之地
人工智能
hnult1 小时前
2026 在线培训考试系统选型指南:核心功能拆解与选型逻辑
人工智能·笔记·课程设计
A小码哥1 小时前
AI 设计时代的到来:从 PS 到 Pencil,一个人如何顶替一个团队
人工智能
阔皮大师1 小时前
INote轻量文本编辑器
java·javascript·python·c#
AIGCmitutu1 小时前
PS 物体底部阴影怎么做?3 步做出自然逼真的投影效果
人工智能·电子商务·photoshop·ps·美工
小法师爱分享1 小时前
StickyNotes,简单便签超实用
java·python