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)  # 正确做法
相关推荐
吴佳浩 Alben1 小时前
Hermes vs OpenClaw:基于源码的 Agent Loop 全面分析
人工智能·ai·transformer
2401_885665191 小时前
从零搭建卷积神经网络:基于PyTorch实现MNIST手写数字分类
pytorch·python·神经网络·算法·机器学习·分类·cnn
林小卫很行1 小时前
Obsidian 入门60:用 SyncThing 把多台设备织成一张网
人工智能·知识管理·obsidian
翼龙云_cloud1 小时前
腾讯云代理商:2026如何使用腾讯云CloudBase AI Builder 搭建个人博客?
人工智能·云计算·腾讯云·ai智能体
Conniefish1 小时前
文档切片向量化
人工智能
填满你的记忆1 小时前
MCP协议是什么?为什么它被称为AI时代的“USB接口”?
java·人工智能·agent·mcp
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【72】集成 MCP 客户端
java·人工智能·spring
ZHW_AI课题组1 小时前
利用DeepLab在PascalVOC数据集中实现简单物体的多类别分割
人工智能·计算机视觉
直接冲冲冲1 小时前
pytorch-深度学习-引言
人工智能·pytorch·深度学习