• permute函数的作用是对tensor进行转置。
import torch
import torch.nn as nnx = torch.randn(1, 2, 3, 4)
print(x.size())
print(x.permute(2, 1, 0, 3).size())

随机生成一个1X2X3X4的四维向量,permute函数的参数表示的是转置后的向量位置。比如原向量中(1, 2, 3, 4),1的下标是0,2的下标是1,3的下标是2,4的下标是3;在x.permute(2, 1, 0, 3)中,2代表原来下表为2的数字3放在第一位(也就是N),1代表原来下表为1的数字2放在第二位(也就是C),0代表原来下表为0的数字1放在第三位(也就是H),3代表原来下表为3的数字4放在第四位(也就是W)。这样产生的结果如下:

torch.Size([1, 2, 3, 4])   #原来的tensor
torch.Size([3, 2, 1, 4])   #转置后的tensor
  • **torch.transpose()只能操作二维转置。**这个意思不是torch.transpose()只能作用于二维向量,它的意思是一次只能进行两个维度的转置,如果需要多个维度的转置,那么需要多次调用transpose()。比如上述的tensor[1,2,3,4]转置为tensor[3,4,1,2],使用transpose需要做如下
x.transpose(0,2).transpose(1,3)
  • view()函数作用的内存必须是连续的,如果操作数不是连续存储的,必须在操作之前执行contiguous(),把tensor变成在内存中连续分布的形式;
  • 我们来直观看一下tensor转置的实际效果。
import torch
import torch.nn as nn
import numpy as npy = np.array([[[1, 2, 3], [4, 5, 6]]]) # 1X2X3
y_tensor = torch.tensor(y)
y_tensor_trans = y_tensor.permute(2, 0, 1) # 3X1X2
print(y_tensor.size())
print(y_tensor_trans.size())print(y_tensor)
print(y_tensor_trans)
print(y_tensor.view(1, 3, 2)) 
torch.Size([1, 2, 3])
torch.Size([3, 1, 2])
tensor([[[1, 2, 3],[4, 5, 6]]])
tensor([[[1, 4]],[[2, 5]],[[3, 6]]])
tensor([[[1, 2],[3, 4],[5, 6]]])
  • view()函数是连续操作内存的,他会将1、2、3、4、5、6连续分配,上述是将1X2X3变成1X3X2。如果变成1X2X3,结果如下:
tensor([[[1, 2, 3],[4, 5, 6]]])

permute函数(Pytorch)相关推荐

  1. PyTorch中contiguous、view、Sequential、permute函数的用法

    在pytorch中,tensor的实际数据以一维数组(storage)的形式存储于某个连续的内存中,以"行优先"进行存储. 1. tensor的连续性 tensor连续(conti ...

  2. pytorch:深入理解 reshape(), view(), transpose(), permute() 函数

    文章目录 前言 1. reshape() 2. view() ① 1 阶变高阶 1 阶变 2 阶 1 阶变 3 阶 1 阶变 4 阶 1 阶变 m 阶 ② 2 阶变 m 阶 ③ 3 阶变 m 阶 ④ ...

  3. Pytorch之permute函数

    参考 Pytorch之permute函数 - 云+社区 - 腾讯云 1.主要作用:变换tensor维度 example: import torch x = torch.randn(2, 3, 5) p ...

  4. pytorch tranpose与permute函数

    transpose和permute都是转置函数,可以交换Tensor的维度. 1. transpose torch.transpose(input, dim0, dim1, out=None) → \ ...

  5. python中permute_Pytorch之permute函数

    1 先看看官方中英文doc: torch.Tensor.permute (Python method, in torch.Tensor) 1.1 permute(dims) 将tensor的维度换位. ...

  6. Matlab 基础01 - 多维数组的排列转换和Permute 函数

    前言: 本章通过Matlab官网的例子,介绍Matlab Permute函数的数组维度置换功能:由于官网的说明比较晦涩难懂,所以,这里用自己的语言和理解重新组织了一下. 1 语法: B = permu ...

  7. matlab中permute,matlab中permute函数

    matlab中permute函数app是一款聚集海量游戏玩家的游戏社区应用,permute软件上可以看各大神原创游戏视频直播,与游戏大神互动交友,还能自由录制游戏视频记录精彩时刻. 功能介绍 matl ...

  8. permute函数的用法

    1 先看看官方中英文doc: torch.Tensor.permute (Python method, in torch.Tensor) 1.1 permute(dims) 将tensor的维度换位. ...

  9. Matlab中repmat、permute函数用法

    repmat函数用法 复制和平铺矩阵 函数repmat 格式:  B = repmat(A, m, n) %将矩阵A复制m*n块,即B由m*n块A平铺而成 B = repmat(A, [m n])%与 ...

最新文章

  1. Go 分布式学习利器(17)-- Go并发编程之协程机制:Grountine 原理及使用
  2. 近期活动盘点:基于雷达图像预测未来降水参赛经验分享、智慧政府讲座、金融AI思享会、数据法学研讨会(11.29-11.30)
  3. 死磕Java并发:J.U.C之并发工具类:CountDownLatch
  4. js字符串函数 [http://www.cnblogs.com/qfb620/archive/2011/07/28/2119799.html]
  5. javascript获取时间差
  6. 新款iPhone SE是改良版iPhone 8无误了,部分零件可互换
  7. ajax发送请求和数据返回,Ajax发送和接收请求
  8. Merkle Tree与区块链
  9. python求解最大子序列乘积问题,子序列可连续也可不连续
  10. 自定义Inspector检视面板
  11. rapidminer java_在Java应用程序RapidMiner的整合(Integration of RapidMiner i
  12. 常用塑料的种类以及用途:
  13. 配置jetson的usb转串口驱动
  14. 双向链表学生管理系统(0723)
  15. 双IP双线路实现方式 先来说说双线单IP和双线双IP的区别
  16. Not Adjacent Matrix、Same Differences、Arranging The Sheep
  17. 应届生 实习生 社招最常用招聘网站
  18. 大屏可视化简介(echarts)
  19. Oracle觸發器調用procedure寄信
  20. Pytorch基本操作(5)——torchvision中的Dataset以及Dataloader

热门文章

  1. TSINGSEE青犀视频H265编码视频流媒体播放器EasyPlayer-RTSP的OCX控件注册过程介绍
  2. 《TXT文本+Excel数据批处理》一眼就会VLOOKUP函数。
  3. 多进程Twemproxy
  4. canvas画旋转椭圆
  5. 用python画的炫酷图形_太秀了,没想到这些既炫酷又能动的图竟然是用 Python 画的!...
  6. OpenStack Foundation说开放式基础设施,葫芦里卖的什么药
  7. 用 C 语言编写 Windows 服务程序的五个步骤
  8. VMware虚拟机联网桥接方式和nat方式
  9. 抖音超火的图片视频教程!快速制作技巧,创意爆表了
  10. 用Qt 编写黑白棋程序