PyTorch入门:探索Tensor的基本操作(2)

torch.cat()

a = torch.zeros((2,4))
b = torch.ones((2,4))
out = torch.cat((a,b), dim=1)
print(out)运行结果如下:
tensor([[0., 0., 0., 0., 1., 1., 1., 1.],[0., 0., 0., 0., 1., 1., 1., 1.]])

torch.stack():在新的维度进行拼接

a = torch.linspace(1,12,12).view(4,3)
b = torch.linspace(12,24,12).view(4,3)
print(a,b)
out = torch.stack((a,b), dim=1)
print(out)
print(out.shape)
print(out[:,0,:])  #a
print(out[:,1,:])  #b运行结果如下:
tensor([[ 1.,  2.,  3.],[ 4.,  5.,  6.],[ 7.,  8.,  9.],[10., 11., 12.]])
tensor([[12.0000, 13.0909, 14.1818],[15.2727, 16.3636, 17.4545],[18.5455, 19.6364, 20.7273],[21.8182, 22.9091, 24.0000]])
tensor([[[ 1.0000,  2.0000,  3.0000],[12.0000, 13.0909, 14.1818]],[[ 4.0000,  5.0000,  6.0000],[15.2727, 16.3636, 17.4545]],[[ 7.0000,  8.0000,  9.0000],[18.5455, 19.6364, 20.7273]],[[10.0000, 11.0000, 12.0000],[21.8182, 22.9091, 24.0000]]])
torch.Size([4, 2, 3])
tensor([[ 1.,  2.,  3.],[ 4.,  5.,  6.],[ 7.,  8.,  9.],[10., 11., 12.]])
tensor([[12.0000, 13.0909, 14.1818],[15.2727, 16.3636, 17.4545],[18.5455, 19.6364, 20.7273],[21.8182, 22.9091, 24.0000]])

torch.chunk():无法平均的话最后一块小于平均值

a = torch.rand(3,4)
print(a)
out = torch.chunk(a, 2, dim = 0) #零维度上平均切成两块
print(out)
运行结果如下:
tensor([[0.8622, 0.8813, 0.8506, 0.4134],[0.0779, 0.7562, 0.1696, 0.2435],[0.4689, 0.9242, 0.3887, 0.0454]])(tensor([[0.8622, 0.8813, 0.8506, 0.4134],[0.0779, 0.7562, 0.1696, 0.2435]]), tensor([[0.4689, 0.9242, 0.3887, 0.0454]]))

torch.split():两种切分方式如下

a = torch.rand(5,4)
out = torch.split(a, 2, dim=0) # 2组切一刀
print(out)
结果如下:
(tensor([[0.5005, 0.7890, 0.9882, 0.3623],[0.4507, 0.7575, 0.3662, 0.1380]]), tensor([[0.5239, 0.0081, 0.1808, 0.1356],[0.5778, 0.3228, 0.8367, 0.5824]]), tensor([[0.2967, 0.7542, 0.2384, 0.3248]]))out = torch.split(a, [1,2,3], dim=0)   #按照list清单来切
结果如下:
(tensor([[0.3039, 0.0142, 0.6083, 0.0831]]), 
tensor([[0.2401, 0.0204, 0.2778, 0.6313]]), 
tensor([[0.1951, 0.9309, 0.3008, 0.0065],[0.2678, 0.8499, 0.7622, 0.3273],[0.1647, 0.1284, 0.4363, 0.3052]]))

以下是几个易混淆的实例

out = torch.unsqueeze(a,0) #-1表示把维度增加在最后面
out = torch.unbind(a, dim=2) #去除某个维度有点类似于在这个维度上切块操作
print(torch.flip(a, dims=[1,2])) #可以同时对多个维度进行翻转
print(torch.rot90(a,2,dims=[0,1])) #传入2表示逆时针2*90°的旋转,若负数表示顺时针的90°旋转

以下是把一张图片数据转换的实例:

im_data = cv2.imread("test.jpg")
print(im_data)
cv2.imshow("1", im_data)out = torch.from_numpy(im_data) #把numpy转换成Tensor数据print(out)
out = torch.flip(out, dims=[0]) #翻转0维度即图片的高
data = out.numpy()  #把tensor转换成numpy
cv2.imshow("2", data)
cv2.waitKey(0)

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

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

相关文章

深度学习 --- stanford cs231学习笔记五(训练神经网络之数据的预处理)

数据的预处理(Data Preprocessing) 2 Data Preprocessing数据的预处理 数据预处理的几种方法 2,1 数据的零点中心化 数据的零点中心化的目的就是为了把数据的整体分布拉回到原点附近,也就是让数据的整体均值变为0。 ​ 2,2 数据的标准化 数据…

缓冲区溢出

本文作者:杉木涂鸦智能安全实验室 前置知识点 栈 栈(Stack)是计算机中的一种数据结构,用于存储临时数据。它的特点是后入先出(LIFO),只能在栈顶添加或删除数据。在程序中,栈被用于…

从一道算法题开始,爱上Python编程

Python是一门简单易学、高效强大的编程语言,许多人因为它的便捷性和广泛应用而爱上编程。今天,我将通过一道有趣的算法题,带领大家一步步写出Python代码,并最终解决问题。希望通过这篇文章,能激发大家对Python编程的兴…

[创业之路-131] :制造业企业的必备管理神器-ERP-ERP常见单据

目录 一、采购管理的ERP常见单据 1.1 请购单: 主要内容 作用 操作流程 1.2 采购订单(Purchase Order, PO): 1.3 采购合同(Purchase Contract): 1.4 采购发票(Purchase Invoi…

操纵系统的特征-线程的六种状态

线程的六种状态 线程是操作系统进行运算调度的最小单位,它可以分为六种状态 新建状态(NEW) 用new创建一个线程对象,这时候处于新建状态 可运行状态(RUNNABLE) 可运行状态又分为两种状态:就绪…

计算机网络模型(OSI架构、TCP/IP架构)

OSI开放式系统互联 为什么会有通用的网络通信模型(OSI、TCP/IP)一、OSI(1)OSI 是什么(2)OSI 七层第七层、应用层第六层、表示层第五层、会话层第四层、传输层第三层、网络层第二层、数据链路层第一层、物理…

Redis 7.x 系列【8】数据类型之哈希(Hash)

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 HSET2.2 HGET2.3 HDEL2.4 HEXISTS2.5 HGETALL2.6 HKEYS2.7 HLE…

基于PHP+MySQL组合开发家政预约服务小程序源码系统 带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代,家政服务行业也逐渐融入了科技的力量。为了满足市场需求,我们开发了一款基于 PHPMySQL 组合的家政预约服务小程序源码系统。该系统不仅提供了便捷的家政服务预约功能,还具备完整的安装代码包和详细的搭建教程&…

安全工具 | BurpSuite安装使用(保姆级教程!)

Burp Suite下载,破解,代理web,代理模拟器 (一)为Burp Sutie下载运行执行脚本环境(Java) 1.Java官网下载地址:https://www.oracle.com/java/technologies/ 下载Java SE 17.0.8(LTS) 备注:1.2023版Burp Suite 完美的运行脚本的环境是Java17 2.Java8不支持…

RP2040 开发,用 Arduino 通过 ADC 获取电压测量数据

这两天测试了一下如何通过 RP2040 的内置 ADC 获取一个待测量的电压数据,RP2040 内置了4路ADC,分辨率是12bit,也就是说,可以获取4096阶的变化量,但第4个 ADC 已经用于测量芯片的内部温度,所以实际能用的仅有…

浅谈逻辑控制器之随机控制器

浅谈逻辑控制器之随机控制器 随机控制器(Random Controller)是众多逻辑控制器中的一种,它为测试脚本引入了随机性,提高了模拟真实用户行为的灵活性。 随机控制器的功能 随机控制器的作用在于从其直接子元素(通常是采样器)中随机…

电脑桌面杂乱无章,整理电脑桌面,电脑桌面整理整洁电脑桌面这里推荐腾讯桌面整理软件

这里只需要下载桌面整理独立版就行,就37M多,官网如下: 桌面整理_桌面整理软件_一键桌面整理工具-腾讯电脑管家官网 (qq.com)

使用uniapp.pageScrollTo方法进行页面滚动

先看看是不是你想要的: 需求: 有个填写数据的单子在提交的时候,会对必填项做校验,如果必填项没有数据的话,必填项校验生效给出提示,并且页面滚动到第一个需要填写数据的地方。 开发: 因为这个…

vs code python开发笔记

目录 安装插件 不全: 2.选择python解释器 安装插件 不全: remote ssh python debuger 左下角,点击左右左右箭头,远程连接到ssh 2.选择python解释器 ctrlshiftP打开VSCode的命令行,输入python: select Interpreter…

【Unity】Excel配置工具

1、功能介绍 通过Excel表配置表数据,一键生成对应Excel配置表的数据结构类、数据容器类、已经二进制数据文件,加载二进制数据文件获取所有表数据 需要使用Excel读取的dll包 2、关键代码 2.1 ExcelTool类 实现一键生成Excel配置表的数据结构类、数据…

细粒度图像分类论文阅读笔记

细粒度图像分类论文阅读笔记 摘要Abstract1. 用于细粒度图像分类的聚合注意力模块1.1 文献摘要1.2 研究背景1.3 本文创新点1.4 计算机视觉中的注意力机制1.5 模型方法1.5.1 聚合注意力模块1.5.2 通道注意力模块通道注意力代码实现 1.5.3 空间注意力模块空间注意力代码实现 1.5.…

Qt实战项目——贪吃蛇

一、项目介绍 本项目是一个使用Qt框架开发的经典贪吃蛇游戏,旨在通过简单易懂的游戏机制和精美的用户界面,为玩家提供娱乐和编程学习的机会。 游戏展示 二、主要功能 2.1 游戏界面 游戏主要是由三个界面构成,分别是游戏大厅、难度选择和游戏…

基于QFD的景区共享代步车创新设计

一、传统景区交通方式的瓶颈 在传统景区中,游客往往面临着步行太累、乘坐观光车又不够自由灵活的困境。同时,随着游客数量的不断增加,景区内的交通压力也在逐渐增大。因此,开发一种既环保又便捷的代步工具,成为了摆在…

【Java Web】会话管理

目录 一、为什么需要会话管理? 二、会话管理机制 三、Cookie概述 四、HttpSession概述 4.1 HttpSession时效性 一、为什么需要会话管理? HTTP协议在设计之初就是无状态的,所谓无状态就是在浏览器和服务器之间的通信过程中,服务器并…

数据分类分级分几步?“6步分解”一目了然!

数据分类分级是企业开展数据安全治理的第一步。通过数据分类分级对数据资产进行盘点,及时掌握内部数据情况,有针对性的对各类型数据采取安全防护措施,为后续企业数据资产管理和数据安全体系建设起到关键作用。 同时,随着《中华人民…