详细分析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 只能同时交换两个维度,而无法一次性处理多个维度
  • 数据不复制:返回的是原始张量的视图,因此内存开销较小
  • 维度索引:确保指定的维度索引在张量的维度范围内,否则会引发错误
相关推荐
木子杳衫2 小时前
【软件开发】管理类系统
python·web开发
程序员小远5 小时前
银行测试:第三方支付平台业务流,功能/性能/安全测试方法
自动化测试·软件测试·python·功能测试·测试工具·性能测试·安全性测试
猫头虎7 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
沿着路走到底7 小时前
python 基础
开发语言·python
烛阴9 小时前
武装你的Python“工具箱”:盘点10个你必须熟练掌握的核心方法
前端·python
杨枝甘露小码10 小时前
Python学习之基础篇
开发语言·python
我是华为OD~HR~栗栗呀10 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试
递归不收敛10 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:1.3 特征工程与模型优化
pytorch·学习·机器学习
小蕾Java11 小时前
PyCharm 软件使用各种问题 ,解决教程
ide·python·pycharm
Lucky_Turtle11 小时前
【PyCharm】设置注释风格,快速注释
python