详细分析Pytorch中的transpose基本知识(附Demo)| 对比 permute

目录

  • 前言
  • [1. 基本知识](#1. 基本知识)
  • [2. Demo](#2. Demo)

前言

原先的permute推荐阅读:详细分析Pytorch中的permute基本知识(附Demo)

1. 基本知识

transpose 是 PyTorch 中用于交换张量维度的函数,特别是用于二维张量(矩阵)的转置操作,常用于线性代数运算、深度学习模型的输入和输出处理等

基本知识如下

  • 功能:交换张量的两个维度
  • 输入:一个张量和两个要交换的维度的索引
  • 输出:具有新维度顺序的张量

原理分析如下:

transpose 的核心原理是通过交换指定维度的方式改变张量的形状

例如,对于一个二维张量 (m, n),调用 transpose(0, 1) 会返回一个形状为 (n, m) 的新张量,其元素顺序经过了调整

  • 高维张量: 对于高维张量,transpose 只会影响指定的两个维度,而其他维度保持不变
  • 内存视图:与 permute 类似,transpose 返回的是原始张量的一个视图,不会进行数据复制

2. Demo

示例 1: 基本用法

python 复制代码
import torch

# 创建一个 3x4 的矩阵
matrix = torch.randn(3, 4)
print("原始矩阵形状:", matrix.shape)

# 使用 transpose 交换维度
# 将矩阵的维度从 (3, 4) 变为 (4, 3)
transposed_matrix = matrix.transpose(0, 1)
print("转置后矩阵形状:", transposed_matrix.shape)

截图如下:

示例 2: 高维张量的转置

python 复制代码
import torch

# 创建一个 2x3x4 的张量
tensor = torch.randn(2, 3, 4)
print("原始张量形状:", tensor.shape)

# 使用 transpose 交换第二和第三维
# 将张量的维度从 (2, 3, 4) 变为 (2, 4, 3)
transposed_tensor = tensor.transpose(1, 2)
print("转置后张量形状:", transposed_tensor.shape)

截图如下:

示例 3: 在深度学习中的应用

python 复制代码
import torch

# 创建一个假设的批量数据 (批量, 高度, 宽度, 通道)
batch_tensor = torch.randn(5, 256, 256, 3)
print("原始批量形状:", batch_tensor.shape)

# 将通道和宽度维度交换
# 适用于某些模型的输入
batch_transposed = batch_tensor.transpose(2, 3)
print("转置后批量形状:", batch_transposed.shape)

截图如下:

基本的注意事项如下:

  • 只支持交换两个维度: transpose 只能同时交换两个维度,而无法一次性处理多个维度
  • 数据不复制:返回的是原始张量的视图,因此内存开销较小
  • 维度索引:确保指定的维度索引在张量的维度范围内,否则会引发错误
相关推荐
安_12 小时前
如何构建和使用向量索引?HNSW 和 IVF 有什么区别?
python·ai
counting money13 小时前
Java IO流详解:从InputStream到文件操作实战
java·开发语言·python
坚持学习前端日记14 小时前
Python SQLAlchemy ORM 从0到1精通实战手册(基础到复杂高阶)
数据库·python·oracle
北斗落凡尘14 小时前
LangGraph 入门实战(11)--输出模式
后端·python·langchain
雪碧聊技术15 小时前
安装Python(保姆级教程)
python·版本更新·python下载
++==15 小时前
JSON和Python的 四种核心容器
python·json
张龙68717 小时前
uv 全面指南:比 pip 快 100 倍的 Python 包管理器,从安装到团队落地
后端·python
@HNUSTer17 小时前
Python数据可视化科技图表绘制系列教程(八)
python·数据可视化·科技论文·专业制图·科研图表
专注仿真18 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
阿图灵18 小时前
Seq2Seq Transformer 中英翻译实战:从 GRU 到 Transformer,BLEU 0.225 → 0.307
pytorch·深度学习·gru·transformer·机器翻译·seq2seq