torch:transpose和permute的用法

1. transpose -- 交换两个维度

复制代码
import torch

x = torch.randn(2, 3, 5)      # shape: (2, 3, 5)
y = x.transpose(0, 1)         # shape: (3, 2, 5)  交换第0维和第1维

2. permute -- 任意重排所有维度

复制代码
x = torch.randn(2, 3, 5)
y = x.permute(2, 0, 1)        # shape: (5, 2, 3)  原第2维→新第0维,原第0维→新第1维,原第1维→新第2维
z = x.permute(1, 2, 0)        # shape: (3, 5, 2)

常用场景

  • 图像通道调整(B, H, W, C)(B, C, H, W)permute(0, 3, 1, 2)

  • 转置矩阵 :二维张量 (M, N)(N, M)transpose(0, 1)t()

  • 批量矩阵转置(B, M, N)(B, N, M)transpose(1, 2)

非连续内存transposepermute 会让张量变得不连续,若后续需要 .view() 操作,必须先调用 .contiguous()

复制代码
x = torch.randn(2, 3)
y = x.transpose(0, 1)       # shape (3,2), 不连续
# y.view(6)  # 可能报错!
y = y.contiguous().view(6)  # 正确做法
相关推荐
龙虾PRO3 小时前
把握人工智能时代机遇,夯实科技强国建设根基
人工智能·科技·百度
冬奇Lab4 小时前
企业知识库系列(00):在写第一行代码之前,先把评测数据集做好
人工智能
二川bro4 小时前
Obsidian+AI自生长知识库,告别无效笔记整理
人工智能
冬奇Lab4 小时前
开源项目第184期:MiroFish — 盛大出品的群体智能预测引擎,用数千 AI Agent 模拟社会演化来预测未来
人工智能·开源·资讯
科研小刘带你玩学术4 小时前
【IEEE论文解析】深度强化学习如何优化未来智能无线通信系统?
人工智能·边缘计算·无线通信·6g·深度强化学习·智能系统·ieee论文
LyridRelan4 小时前
Skill Cli MCP 的三者关系以及部分Q&A
人工智能·ai·个人开发
我就是妖怪4 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·人工智能
夏沫的梦4 小时前
用 TRAE Work 3 小时搞定 3 天工作量:一场竞品调研报告的实战复盘
人工智能
等一朵映山红5 小时前
多模态向量库选型:ChromaDB 适配图文多模态数据实战
人工智能