pytorch学习经验(二) pytorch常用张量维度操作

  • 去掉大小为1的维度

x = torch.squeeze(x)

  • 添加大小为1的维度

x = torch.unsqueeze(x, 3) # 在第3个维度上扩展

  • 张量扩展,在指定维度上将原来的张量扩展到指定大小,比如原来x是31,输入size为[3, 4],可以将其扩大成34,4为原来1个元素的复制。

x = x.expand(*size)

  • 交换两个维度

x = torch.transpose(x, 1, 2) # 交换1和2维度

  • 交换多个维度,transpose只能对两个维度进行操作,permute没有限制

x = x.permute(1, 2, 3, 0) # 进行维度重组

  • 改变形状,下面这两条命令意思是一样的,但是view可能会出现一些诡异的报错,原因是当从多的维度变到少的维度时,如果张量不是在连续内存存放,则view无法变成合并维度,但reshape不受限制。

x = x.view(1, 2, -1)
x = x.reshape(1, 2, -1)

  • 张量拼接,第一个参数是一个tuple,每个tuple是一个张量,第二维度是dim,在指定dim上拼接

torch.cat(a_tuple, dim)

  • 张量拼接,与cat不同的在于,cat只能在原有的某一维度上进行连接,stack可以创建一个新的维度,将原有维度在这个维度上进行顺序排列。比如说,有2个44的张量,用cat就只能把它们变成一个84或48的张量,用stack可以变成24*4.

torch.stack(a_tuple, dim)

  • 张量拆分,在指定维度上将a变成chunk_num个大小相等的chunk,返回一个tuple。如果最后一个不够chunk_num,就返回剩下的。另一个相似的是split,除了第二个参数是chunk_size,其他都一样。

torch.chunk(a, chunk_num, dim)
torch.split(a, chunk_size, dim)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文介绍一些可能有用的torch类中的方法。 torch.cat(inputs, dimension=0) 对in...
    永远学习中阅读 4,843评论 0 2
  • 1.pytorch中的索引 index_select(x, dim, indices)dim代表维度,indice...
    yumiii_阅读 5,473评论 0 0
  • 在这个小城市,时间仿佛过得特别慢。我从早晨醒来,一直缠绕在念想中,死死生生好几回了,时间却只过了一点点。这个我长大...
    0759156fad9c阅读 674评论 1 1
  • 小的时候对这个世界充满了好奇,一直想看看外面的世界,一直好奇别人的生活是怎么样的。 是不是同我的生活一样,想知道,...
    恋樱的柠檬派阅读 395评论 0 5
  • 什么是shader? Shader中文翻译 着色器,是一种较为短小的程序片段,用于高速图形硬件如何计算和输出图像,...
    summer鹏阅读 1,347评论 0 0

友情链接更多精彩内容