当前位置: 首页 > article >正文

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

目录

  • 前言
  • 1. 基本知识
  • 2. Demo

前言

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

1. 基本知识

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

基本知识如下

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

原理分析如下:
transpose 的核心原理是通过交换指定维度的方式改变张量的形状
例如,对于一个二维张量 (m, n),调用 transpose(0, 1) 会返回一个形状为 (n, m) 的新张量,其元素顺序经过了调整

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

2. Demo

示例 1: 基本用法

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: 高维张量的转置

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: 在深度学习中的应用

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 只能同时交换两个维度,而无法一次性处理多个维度
  • 数据不复制:返回的是原始张量的视图,因此内存开销较小
  • 维度索引:确保指定的维度索引在张量的维度范围内,否则会引发错误

http://www.kler.cn/a/375744.html

相关文章:

  • Python中的SQL数据库管理:SQLAlchemy教程
  • 大数据新视界 -- 大数据大厂之数据质量管理全景洞察:从荆棘挑战到辉煌策略与前沿曙光
  • vue3项目中el-tooltip实现内容溢出时再显示,并设置tip的最大宽度
  • Oracle与SQL Server的语法区别
  • 商务英语学习柯桥学外语到泓畅-老外说“go easy on me”是什么意思?
  • CSS3新增背景属性(四)
  • 论敏捷软件开发方法及其应用
  • [含文档+PPT+源码等]精品基于PHP实现的鲜花批发销售网站的设计与实现
  • centos7 keepalived 安装一共有几种方式?
  • jieba-fenci 05 结巴分词之简单聊一聊
  • 精品网:低时延、高私密性,满足企业多元化需求
  • Vue指令:v-show、v-if
  • 安科瑞AMB400分布式光纤测温系统解决方案--远程监控、预警,预防电气火灾
  • 网页中嵌入Unity并传参给Unity
  • 【论文阅读】语言模型何时需要检索增强
  • 配置BGP与IGP交互和路由自动聚合示例
  • Unity3D包管理bug某些版本Fbx Exporter插件无法搜索到的问题
  • Python网络爬虫基础指南
  • Leetcode—624. 数组列表中的最大距离【中等】
  • AI-基本概念-机器学习
  • ArcGIS影像调色(三原色)三原色调整
  • 探讨单片机中-----片上外设
  • LeetCode每日一题685---冗余连接 II
  • [MySQL#10] 索引底层(1) | Page | 页目录
  • MCU内存结构解析:FLASH、ROM与RAM的功能与区别
  • elasticsearch 8.x 插件安装(六)之Hanlp插件