04数据操作

import torch

(1)张量表示一个数据组成的数组,这个数组可能有多个维度。

x=torch.arange(12)
x
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

(2)通过shape来访问张量的形状和张量中元素的总数

x.shape
torch.Size([12])

(3)number of elements表示内存的大小

x.numel()
12

(4)要改变一个张量的形状而不改变元素数量和元素值,我们要调用reshape函数

x=x.reshape(3,4)
x
tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])

(5)使用全0、全1、其他常量或者从特定分布中随机采样的数字

torch.zeros((2,3,4))
tensor([[[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]],[[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]]])
torch.ones((2,3,4))
tensor([[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]],[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]]])

(6)通过提供包含数值的Python列表或者嵌套列表来为所需张量中的每个元素赋予确定值

torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])
tensor([[2, 1, 4, 3],[1, 2, 3, 4],[4, 3, 2, 1]])

(7)创建元素进行相应的运算

x=torch.tensor([1.0,2,4,8])
y=torch.tensor([2,2,2,2])
x+y,x-y,x*y,x/y,x**y
(tensor([ 3.,  4.,  6., 10.]),tensor([-1.,  0.,  2.,  6.]),tensor([ 2.,  4.,  8., 16.]),tensor([0.5000, 1.0000, 2.0000, 4.0000]),tensor([ 1.,  4., 16., 64.]))
torch.exp(x)  #指数运算
tensor([2.7183e+00, 7.3891e+00, 5.4598e+01, 2.9810e+03])

(8)我们这里把多个张量连结在一起

X=torch.arange(12,dtype=torch.float32).reshape((3,4))
Y=torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]])
torch.cat((X,Y),dim=0),torch.cat((X,Y),dim=1)   #dim=0表示按行连接;dim=1表示按列连接
(tensor([[ 0.,  1.,  2.,  3.],[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.],[ 2.,  1.,  4.,  3.],[ 1.,  2.,  3.,  4.],[ 4.,  3.,  2.,  1.]]),tensor([[ 0.,  1.,  2.,  3.,  2.,  1.,  4.,  3.],[ 4.,  5.,  6.,  7.,  1.,  2.,  3.,  4.],[ 8.,  9., 10., 11.,  4.,  3.,  2.,  1.]]))

(9)通过逻辑运算符构建二元张量

X==Y
tensor([[False,  True, False,  True],[False, False, False, False],[False, False, False, False]])

对只有两种所有元素求和会产生一个只有一个元素的张量

X.sum()
tensor(66.)

(10)即使形状不同,我们可以调用广播机制来执行按元素操作

a=torch.arange(3).reshape((3,1))
b=torch.arange(2).reshape((1,2))
a,b
(tensor([[0],[1],[2]]),tensor([[0, 1]]))
a + b  #这里广播机制将a变成三行两列的部分,第一列加0;第二列加1
tensor([[0, 1],[1, 2],[2, 3]])

(11)选用元素,其中-1用于选用最后一个元素,[1:3]用于选用第二个和第三个元素

X[-1],X[1:3]
(tensor([ 8.,  9., 10., 11.]),tensor([[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.]]))

(12)索引元素进行修改

X[1,2]=9
X
tensor([[ 0.,  1.,  2.,  3.],[ 4.,  5.,  9.,  7.],[ 8.,  9., 10., 11.]])

(13)对多个元素进行相应的赋值

X[0:2,:]=12
X
tensor([[12., 12., 12., 12.],[12., 12., 12., 12.],[ 8.,  9., 10., 11.]])

(14)运行一些操作可能会导致为新结果分配内存

before=id(Y)
Y=Y+X
id(Y)==before
False
#执行原地操作
Z=torch.zeros_like(Y)#类型一样但全0
print('id(Z):',id(Z))
Z[:]=X+Y
print('id(Z):',id(Z))
id(Z): 2415349231888
id(Z): 2415349231888
#在后续计算中没有重复使用X,可以减少操作的内存开销
before=id(X)
X+=Y  #or X[:]=X+Y
id(X)==before
True

(15)转换为NUMPY张量

A=X.numpy()
B=torch.tensor(A)
type(A),type(B)
(numpy.ndarray, torch.Tensor)

将大小为1的张量转换为Python标量

a=torch.tensor([3.5])
a,a.item(),float(a),int(a)
(tensor([3.5000]), 3.5, 3.5, 3)

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

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

相关文章

MCU中的RTC(Real-Time Clock,实时时钟)是什么?

MCU中的RTC(Real-Time Clock,实时时钟)是什么? 在MCU(微控制器单元)中,RTC(Real-Time Clock,实时时钟) 是一个独立计时模块,用于在系统断电或低功耗状态下持续记录时间和日期。以下是关于RTC的详细说明: 1. RTC的核心功能 精准计时:提供年、月、日、时、分、秒、…

Linux 进程调度管理

进程调度器可粗略分为两类:实时调度器(kernel),系统中重要的进程由实时调度器调度,获得CPU能力强。非实时调度器(user),系统中大部分进程由非实时调度器调度,获得CPU能力弱。实时调度器实时调度器支持的调度策略&#…

基于 C 语言视角:流程图中分支与循环结构的深度解析

前言(约 1500 字)在 C 语言程序设计中,控制结构是构建逻辑的核心骨架,而流程图作为可视化工具,是将抽象代码逻辑转化为直观图形的桥梁。对于入门 C 语言的工程师而言,掌握流程图与分支、循环结构的对应关系…

threejs创建自定义多段柱

最近在研究自定义建模,有一个多断柱模型比较有意思,分享下,就是利用几组点串,比如上中下,然后每组点又不一样多,点续还不一样,(比如第一个环的第一个点在左边,第二个环在右边)&#…

Language Models are Few-Shot Learners: 开箱即用的GPT-3(四)

Result续 Winograd-Style Tasks Winograd-Style Tasks 是自然语言处理中的一类经典任务。它源于 Winograd Schema Challenge(WSC),主要涉及确定代词指的是哪个单词,旨在评估模型的常识推理和自然语言理解能力。 这个任务中的具体通常包含高度歧义的代词,但从语义角度看…

BGP高级特性之认证

一、概述BGP使用TCP作为传输协议,只要TCP数据包的源地址、目的地址、源端口、目的端 口和TCP序号是正确的,BGP就会认为这个数据包有效,但数据包的大部分参数对于攻击 者来说是不难获得的。为了保证BGP免受攻击,可以在BGP邻居之间使…

商旅平台怎么选?如何规避商旅流程中的违规风险?

在中大型企业的商旅管理中,一个典型的管理“黑洞”——流程漏洞与超标正持续吞噬企业成本与管理效能:差标混乱、审批脱节让超规订单频频闯关,不仅让企业商旅成本超支,还可能引发税务稽查风险。隐性的合规风险,比如虚假…

Anaconda的常用命令

Anaconda 是一个用于科学计算、数据分析和机器学习的 Python 发行版,包含了大量的预安装包。它配有 conda 命令行工具,方便用户管理包和环境。以下是一些常用的 conda 命令和 Anaconda 的常见操作命令,帮助你高效管理环境和包。1. 环境管理创…

JVM之【Java虚拟机概述】

目录 对JVM的理解 JVM的架构组成 类加载系统 执行引擎 运行时数据区 垃圾收集系统 本地方法库 对JVM的理解 JVM保证了Java程序的执行,同时也是Java语言具有跨平台性的根本原因;Java源代码通过javac等前端编译器生成的字节码计算机并不能识别&…

RabbitMQ+内网穿透远程访问教程:实现异地AMQP通信+Web管理

RabbitMQ是一个开源的消息队列中间件,基于Erlang开发,遵循AMQP(Advanced Message Queuing Protocol,高级消息队列协议)标准,主要用于实现异步通信、消息解耦和系统间数据传输。它的核心作用是在分布式系统中…

go 语言 timer 与 ticker理论和实例大全

目录 1. 时间之门的钥匙:Timer与Ticker的本质 2. Timer:精准的单次计时 2.1 Timer的基础用法 2.2 停止与重置Timer 2.3 Timer的高级技巧:优雅处理并发 3. Ticker:时间的节拍器 3.1 Ticker的基本用法 3.2 Ticker的高级应用:动态调整周期 4. Timer与Ticker的结合:打…

MySQL 45讲 16-17

全字段排序 explain 中的 using fiesort ,扫描 数据,取出符合判断条件的 数据,到sort buffer中,然后对排序字段采用快速排序进行 排序后直接将 所需字段进行返回 如果 字段长度所占内存大于所分配 的sort buffer ,需要借助 临时文件 进行 数据的存放排序,此时会采用 归并排序,将…

QT项目 -仿QQ音乐的音乐播放器(第四节)

一、RecBox中btUp和btDown按钮clicked处理 选中左右键(btUp和btDown按钮)然后右击转到槽->click() void RecBox::on_btUp_clicked() {}void RecBox::on_btDown_clicked() {} 二、imageList中图片分组 // recbox.h 中新增 int currentIndex; // 标记…

DeepSeek SEO关键词优化提升流量增长

内容概要DeepSeek SEO关键词优化致力于通过科学的方法,显著提升网站在搜索引擎中的可见度与自然流量。其核心在于深入理解并精准匹配用户的真实搜索意图,而非仅仅堆砌词汇。具体来说,该策略运用深度意图导向策略,确保内容与用户需…

# Ubuntu 系统设置 USB PnP 音频设备为默认设备的完整教程

Ubuntu 系统设置 USB PnP 音频设备为默认设备的完整教程 在使用 Ubuntu 系统时,尤其是在嵌入式设备如 NVIDIA Jetson 系列上,我们经常需要将 USB PnP 音频设备设置为默认设备。本文将详细介绍如何通过命令行配置,使 USB PnP 音频设备在系统重…

Hadoop JMX 配置的完整文档

一、JMX 基础概念与 Hadoop 支持 1、JMX 作用。 Java Management Extensions(JMX)提供标准 API 监控 JVM 应用运行时状态(内存、线程、GC)及 Hadoop 组件指标(HDFS 容量、RPC 性能、节点状态) 2、Hadoop 组…

arm架构系统打包qt程序--麒麟操作系统为例

检查系统架构 uname -a如果显示是aarch644或arm64,说明你使用的是ARM架构,,需要下载ARM版本。 下载对应架构的linuxdeployqt 编写脚本 vim deploy.sh#!/bin/bash APP_NAME"sunny450_silc"# 确保deploy目录存在 mkdir -p deploy# 复…

Kong API Gateway深度解析:插件系统与微服务架构的技术基石

在微服务(microservices)架构主导的今天,API网关(API Gateway)作为服务入口的“交通枢纽”,承担着流量调度、安全防护、可观测性(observability)等核心职责。Kong作为开源API网关领域…

Linux应用开发基础知识——Makefile初级教程(九)

目录 一、Makefile是啥? 1.1、了解几种文件(.o 文件和.c文件 ) 1.2、关于Makefile的写法 1.3、简单使用Makefile基本指令 1.4、引入伪目标 1.5、Makefile的优点 1.6、Makefile的使用 二、Makefile创建和使用变量 2.1、创建变量的目的…

面试问题收集——卷积神经网络

博主会经常分享自己在人工智能阶段的学习笔记,欢迎大家访问我滴个人博客!(养成系Blog!) 小牛壮士滴Blog~ - 低头赶路 敬事如仪https://kukudelin.top/ 01-卷积基础知识 问:简述卷积基本操作,…