pytorch学习(十三)torch维度变换

包含了flatten、view reshape transpose permute squeeze unsqueeze cat stack;在琢磨一遍之后就比较好理解了。

1.代码

import torch
import numpy as np#生成一个2组3行4列的数据
data = torch.randn((2,3,4))
print("data.shape:\n",data.shape)
print("data:\n",data)#对数据进行压平,行以及行以后的维度全部展平
#具体的就是一行一行的排列起来
flatten_data = torch.flatten(data,start_dim=1)
print("flatten_data:\n",flatten_data)#可以这样想,原来的数据展成一行,然后每4个数据构成一行,每两行构成一组,最后构成三组
view_data = data.view((3,2,4))
print("view_data:\n",view_data)#和view基本一致的用法和功能
reshape_data = torch.reshape(data,(3,2,4))
print("reshape_data:\n",reshape_data)#transpose每次只能转换两个维度
#表示沿着组的方向, 变成了行,沿组方向也就是[0,0,:] 和[1,0,:]变成了一个组
transpose_data1 = torch.transpose(data,1,0)
print("transpose_data1:\n",transpose_data1)#表示沿组的方向变成了列,也就是[:,0,0]变成了一行数据,结合着[:,1,0],[:,2,0]变成了一组数据
transpose_data2 = torch.transpose(data,2,0)
print("transpose_data2:\n",transpose_data2)#这个可以同时变换多个维度
#这个要怎么理解呢?
#x轴变成了y轴,y轴变成了z轴,z轴变成了x轴
#无论怎么变化,记清楚 x方向是一行,y方向是一列,z方向是一组就可以了
permute_data = data.permute(2,0,1)
print("permute_data:\n",permute_data)#在指定的维度上升一个维度
squeeze_data = torch.squeeze(data,dim=0)
print("squeeze_data:\n",squeeze_data)#去掉维度为1的维度
unsqueeze_data = torch.unsqueeze(squeeze_data,dim=0)
print("unsqueeze_data:\n",unsqueeze_data)#
x1 = torch.tensor([[11, 21, 31], [21, 31, 41]], dtype=torch.int)
x1.shape  # torch.Size([2, 3])
print(x1)
# x2
x2 = torch.tensor([[12, 22, 32], [22, 32, 42]], dtype=torch.int)
x2.shape  # torch.Size([2, 3])
print(x2)
x3 =torch.cat((x1,x2),0)  #按维数0(行)拼接
print("按行拼接:\n",x3)x4 =torch.cat((x1,x2),1)  #按维数0(行)拼接
print("按列拼接:\n",x4)#0的时候是升维度
#非0的时候就是升维度后,0和 设置到dim中,其他的按顺序前移动一个
#比如 0  1  2 现在dim=1 那么0跑到1位置,1往前移动一个,变成了 1 0 2
#比如 0 1 2 现在dim=2, 那么0跑到了2位置,1 2 顺势前移动一个位置,变成了 1 2 0
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = torch.tensor([[11, 22, 33], [44, 55, 66], [77, 88, 99]])
c = torch.stack([a, b], 0)
d = torch.stack([a, b], 1) #看来就是把
e = torch.stack([a, b], 2)
print("升维度拼接:\n",c)
print("拼接-类比与c.permute(1,0,2):\n",d)
print("拼接-类似于c.permute(1,2,0):\n",e)
print("c11",c.permute(1,0,2))
print("c11",c.permute(1,2,0))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天学习打卡营第11天|基于 MindSpore 实现 BERT 对话情绪识别

BERT是一种先进的语言模型,由Google在2018年推出。它通过双向编码器Transformer的Encoder部分,捕捉词语和句子的深层含义。BERT的创新之处在于其预训练方法,特别是Masked Language Model和Next Sentence Prediction,这使得它在问答…

spring boot(学习笔记第十四课)

spring boot(学习笔记第十四课) Spring Security的密码加密,基于数据库认证 学习内容: Spring Security的密码加密基于数据库认证 1. Spring Security的密码加密 如果用户的密码保存在数据库中是以明文保存,对于公司的安全将是灾难性的&…

基于上下文自适应可变长熵编码 CAVLC 原理详细分析

CAVLC CAVLC,即Context-Adaptive Variable-Length Coding,是一种用于视频压缩的编码技术,特别是在MPEG-4视频编码标准中使用。CAVLC是一种熵编码方法,它根据视频数据的上下文信息来调整编码长度,以实现更有效的数据压…

Vue3实现word预览

1. 安装依赖 pnpm install vue-office/docx 2. 页面导入 // 导入依赖 import VueOfficeDocx from "vue-office/docx"; // 导入样式文件 import "vue-office/docx/lib/index.css"; 3. 使用(这里使用是文件上传方式)可以直接是在线…

【LeetCode:35. 搜索插入位置 + 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC

文章目录 问题描述解决思路及方法排除方向一:nohup排除方向二:使用绝对路径而不是相对路径 问题描述 命令: java -Xms1024m -Xmx1024m -jar /usr/local/java/bin/mashang/app.jar --server.port8532 ----spring.profiles.activetest是可以直…

网络安全名词解释操作系统

1. 名词解释 渗透测试常用专业术语 1. POC,EXP,Payload与Shellcode等 POC:全称“Proof of Concept”,中文“概念验证”,常指验证某个概念或理论是否可行的过程或实验(代码)。 EXP:全称“Exploit”&#x…

【Vue】重新理解Vue-Router中的两种路由模式

历史小剧场 唐代实在太高太强了,他们忽忘了民族界限,他们不懂害怕外国人,不懂提防外国人,大量使用外国人当兵作将,结果才弄得不可收拾。于是唐代的府兵一变而成为“藩镇”,军阀割据,胡族临制。-…

uni-app:踩坑路---scroll-view内使用fixed定位,无效的问题

前言: emmm,说起来这个问题整得还挺好笑的,本人在公司内,奋笔疾书写代码,愉快的提交测试的时候,测试跟我说,在苹果手机上你这个样式有bug,我倒是要看看,是什么bug。 安卓…

vscode 远程 Ubuntu 系统

1、在 Ubuntu 下检查 sshd 守护进程是否开启 ps -aux | grep sshd如果没有开启,请在 Ubuntu 下输入指令安装 sudo apt-get install openssh-server2、首先打开 Windows 下的 vscode,点击左下角图标打开远程窗口 3、打开远程窗口,选择“Con…

设计App的后端接口分类以及环境依赖包详情

目录 App的后端接口分类 1. 用户登录与注册 2. 设备初始化 3. 广告与推广 4. 应用配置与功能 5. 支付系统 6. 内容分发 7. 资源下载 8. 视频内容 9. 用户行为分析 10. 安全与合规 设计建议 基于Easyswoole,可以在系统中引入需要的一些常见依赖包&#…

《从C/C++到Java入门指南》- 18.面向对象编程基础

18.面向对象基础 前言 写到这里的时候,笔者的《Java从入门到精通》恰好到了,接下来的内容将会以这本书为主要资源进行学习。 类 成员变量 在 Java 中对象的属性称为成员变量,范围是整个类。 public class Book {private String name;pu…

【HZHY-AI300G智能盒试用连载体验】在华为IoTDA平台上建立设备

目录 华为IoTDA平台 注册IoTDA实例 创建产品 添加设备 本文首发于:【HZHY-AI300G智能盒试用连载体验】 智能工业互联网网关 - 北京合众恒跃科技有限公司 - 电子技术论坛 - 广受欢迎的专业电子论坛! 在上一篇博文中介绍了如何在HZHY-AI300G智能盒创建南向设备&a…

react中的context就是vue中的provide/inject吗?

在学习中我发现React 中的 Context 和 Vue 中的 Provide/Inject 类似,下面是讲解与区分。 React Context 作用 在组件树中共享数据,而无需通过逐层传递 props。 使用方法 创建 Context: const MyContext React.createContext(defaultVal…

前端特效动画魔法书:文字渐入效果实现,可做引导页面

前端特效动画魔法书:文字渐入效果实现,可做引导页面 简介 在网页设计的世界中,动画是吸引用户眼球的魔法。Anime.js,一个轻量级且功能强大的JavaScript动画库,是实现这一魔法的完美工具。本文将作为你的技术文档&…

【3D编程技巧】如何用四元数旋转矢量在相机空间进行光照计算

这里介绍一个小TIPS,很久没有这么有成就感了。我以前在学3D数学的时候,书上就有一句话,说你把矢量这些东西用久了,就应该形成一种“直觉”,仿佛这些东西就是你的左右手一样。而这次,我居然真的用“直觉”来…

【开源库学习】libodb库学习(三)

4 查询数据库 如果我们不知道我们正在寻找的对象的标识符,我们可以使用查询在数据库中搜索符合特定条件的对象。ODB查询功能是可选的,我们需要使用--generate-query ODB编译器选项显式请求生成必要的数据库支持代码。 ODB提供了一个灵活的查询API&#x…

Android 14 适配之— BluetoothAdapter、JobScheduler、 Tiles

1. BluetoothAdapter 改动: 在 BluetoothAdapter 中必须加入 BLUETOOTH_CONNECT 权限 Android 14(API 级别 34)或更高版本为目标的App,在调用函数 BluetoothAdapter getProfileConnectionState() 时,需要 BLUETOOTH_…

JAVA零基础小白自学日志——第二十天

文章目录 1.为什么我们需要抽象类2.抽象类3.我们一起来抽象(有病,象也没招你)[1].抽象方法[2].为什么我们先说抽象方法呢?[3].需要明确的 4.关于Object的题外话 今日提要:抽象类 你以为这几天看的内容都是多态&#xf…

复现Android中GridView的bug并解决

几年前的一个bug,GridView的item高度不一致。如下图: 复现bug的代码: import android.os.Bundle; import android.widget.BaseAdapter; import android.widget.GridView; import androidx.appcompat.app.AppCompatActivity; import java.uti…