Pytorch基础操作 —— 8. 张量转置操作
文章目录
- torch.transpose
- 对于高维度张量
- torch.t
- 例程
Function | Description | Detail |
---|---|---|
transpose | Returns a tensor that is a transposed version of input. | 多维张量转置 |
t | Expects input to be <= 2-D tensor and transposes dimensions 0 and 1. | 1、2维张量转置 |
swapaxes | Alias for torch.transpose(). | 和 transpose 功能一致 |
swapdims | Alias for torch.transpose(). | 和 transpose 功能一致 |
torch.transpose
我们有时候会遇到这样的问题,某个时刻我们希望把某个张量从横向量,转置成纵向量。因为对于线性代数来说,矩阵的基本计算法则告诉我们,两个矩阵叉乘必须满足 [l×m]×[m×n][l \times m] \times [m \times n][l×m]×[m×n] 才可以进行计算。但有时候我们为了方便会创建出两个这样维度的矩阵 [m×l][m \times l][m×l] 和 [m×n][m \times n][m×n],为了执行叉乘,必须要对第一个矩阵进行转置。
如果直接用 reshape 或者 view 命令,虽然改变了维度,但是没有改变底层的数据顺序,一样得不到正确的结果。
>>> tensor = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]).view(2, -1)
>>> tensor
tensor([[1, 2, 3, 4, 5],[6, 7, 8, 9, 0]])
>>> tensor.reshape(-1, 2)
tensor([[1, 2],[3, 4],[5, 6],[7, 8],[9, 0]])
对于上面这个例子,我们实际上希望输出的是
tensor([[1, 6],[2, 7],[3, 8],[4, 9],[5, 0]])
所以这个时候就需要转置函数,其函数原型为
torch.transpose(input, dim0, dim1) -> Tensor
这个函数表示张量的某两维度之间进行转置,对于上面这个例子来说即:
>>> tensor = torch.transpose(tensor, dim0=0, dim1=1)
tensor([[1, 6],[2, 7],[3, 8],[4, 9],[5, 0]])
对于高维度张量
高维度张量也存在需要转置的情况,由于transpose不指定具体哪两个维转置,所以相对来说对使用者要方便很多。
>>> tensor = torch.randn(1, 2, 3)
>>> tensor # shape of tensor is [1, 2, 3]
tensor([[[ 0.1264, -0.7503, 0.5522],[ 0.0680, 1.0128, 0.1585]]])>>> tensor = torch.transpose(tensor, dim0=1, dim1=2)
>>> tensor # shape of tensor is [1, 3, 2]
tensor([[[ 0.1264, 0.0680],[-0.7503, 1.0128],[ 0.5522, 0.1585]]])>>> tensor = torch.transpose(tensor, dim0=0, dim1=2)
>>> tensor # shape of tensor is [2, 3, 1]
tensor([[[ 0.1264],[-0.7503],[ 0.5522]],[[ 0.0680],[ 1.0128],[ 0.1585]]])
torch.t
根据描述,这个函数仅能用于小于或等于二维的张量转置
torch.t(input) → Tensor
例程
>>> x = torch.randn(3)
>>> x
tensor([ 2.4320, -0.4608, 0.7702])
>>> torch.t(x)
tensor([ 2.4320, -0.4608, 0.7702])
>>> x = torch.randn(2, 3)
>>> x
tensor([[ 0.4875, 0.9158, -0.5872],[ 0.3938, -0.6929, 0.6932]])
>>> torch.t(x)
tensor([[ 0.4875, 0.3938],[ 0.9158, -0.6929],[-0.5872, 0.6932]])
Pytorch基础操作 —— 8. 张量转置操作相关推荐
- pytorch基础一:张量
简单记录以便查阅 张量 一.创建张量 x = torch.empty(5,3) # 创建未初始化矩阵张量 x = torch.rand(5,3) # 创建初始化随机矩阵张量 x = torch.zer ...
- PyTorch框架学习三——张量操作
PyTorch框架学习三--张量操作 一.拼接 1.torch.cat() 2.torch.stack() 二.切分 1.torch.chunk() 2.torch.split() 三.索引 1.to ...
- Pytorch基础操作 —— 6. 如何使用自定义数据集
文章目录 自定义数据集 Step 1. 熟悉你的数据集 有数据就要有标签 数据大小.维度一定要一样 归一化 Step 2. 确定如何加载你的数据集 使用 DataLoader 批量加载数据 需要注意的 ...
- Pytorch ——基础指北_肆 [构建数据集与操作数据集]
Pytorch --基础指北_肆 系列文章目录 Pytorch --基础指北_零 Pytorch --基础指北_壹 Pytorch --基础指北_贰 Pytorch --基础指北_叁 文章目录 Pyt ...
- 02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)
@[TOC](02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)) 来自慕课网 一.3-1 机器学习中的分类与回归问题-机器学习基本构成元素
- PyTorch基础(一)-----张量(Tensor)
前言 很多人都会拿PyTorch和Google的Tensorflow进行比较,这个肯定是没有问题的,因为他们是最火的两个深度学习框架了.但是说到PyTorch,其实应该先说Torch. 什么是Torc ...
- 【深度之眼PyTorch框架班第五期】作业打卡01:PyTorch简介及环境配置;PyTorch基础数据结构——张量
文章目录 任务名称 任务简介 详细说明 作业 1. 安装anaconda,pycharm, CUDA+CuDNN(可选),虚拟环境,pytorch,并实现hello pytorch查看pytorch的 ...
- 深度学习(14)TensorFlow高阶操作三: 张量排序
深度学习(14)TensorFlow高阶操作三: 张量排序 一. Sort, argsort 1. 一维Tensor 2. 多维Tensor 二. Top_k 三. Top-k accuracy(To ...
- html表格联动,html前端基础:table和select操作
html前端基础:table和select操作 发布时间:2020-05-13 09:58:10 来源:亿速云 阅读:196 作者:Leah 这篇文章主要为大家详细介绍html前端基础中有关table ...
最新文章
- sql的使用详解(针对oeacle)之select(上)
- 【采用】互联网反欺诈体系建设
- Eclipse工作常见问题总结
- 选择题微型计算机系统包括,全国计算机一级选择题专项训练及答案2016
- 启动tomcat不出现命令窗口
- 平安证券:维持超图软件“强烈推荐”评级
- 2018年9月8日 笔试小结
- CSS | 使用 PostCSS 插件让 Web 应用支持暗黑模式
- 前端事件练习之轮播图代码
- 会声会影x4素材_怎么给视频打马赛克?运用会声会影2019
- python 经验模态分解_心电信号去噪4--经验模态分解法(EMD)
- MOOC北京理工《C语言程序设计(上)》第5周第3题:求最小m值
- hdu_1429 胜利大逃亡(续)
- Summary:Fater Rcnn
- MicroSoft Visual Studio 2013 社区版下载地址
- 开源项目推荐:我个人中意的Python/C++/.Net数学库(★精品收藏★)
- 用最新版的Android Studio和Gradle把自己开发的Android包发布到JitPack上
- 数电实验(一)利用与非门设计四舍五入判别电路
- Contest3412 - 2022中石油大中小学生联合训练第七场
- 计算机相关的队名,有创意的队名和口号(精选80个)