首页 > 其他分享 >Pytorch数据操作

Pytorch数据操作

时间:2023-05-06 10:23:56浏览次数:31  
标签:torch tensor reshape 元素 张量 Pytorch 使用 操作 数据

1.Pytorch中tensor的生成与访问

可以使用arange()创建一个张量:如,torch.arange(12)创建0开始的前12个整数:

 除非特殊指定,否则新的张量将存放在内存中,并采用CPU计算。

 

可以使用reshape()来改变张量的形状:

 注意,reshape()的发起者是一个张量,比如这里的x.reshape(),x是一个张量。reshape操作只改变张量的形状,

并不改变张量的大小(元素的数量)以及张量中的值。还可以用x.reshape(-1,4)或x.reshape(3,-1)实现x.reshape(3,4)

同样的功能。

 

使用tensor.zeros()创建全0的tensor,括号内指定该全0的tensor的形状,如:

 上面的例子创建了一个形状为(2,3,4)的tensor。全1同理:

 

使用torch.randn()创建均值为0,方差为1的标准正态分布张量,括号内同样是指定张量的形状,如:

 

还可以用python的列表来为张量指定值和形状,写法为:torch.tensor() :

 

可以使用torch.zeros_like(y)创建与y同形状的全0张量:

 

可以使用shape查看张量的形状:

 注意,shape的发起者一定也是张量。比如这里的x.reshape(3,4)是shape动作的发起者,它是一个三行四列的张量。

 

2.Tensor的基本计算

加、减、乘、除、乘方、幂指这些运算,都可以直接用在张量上,表示按元素的计算(element-wise):

 

 

 使用torch.exp()对张量的每一个元素做以e为底的幂指运算,括号内是某个张量:

 

使用torch.cat()拼接两个张量。括号中指出要拼接的两个张量以及dim的值,dim=0是竖着拼,dim=1是横着拼:

 

使用“==”对张量中的每一个数值判等,运算结果是一个布尔值构成的张量:

 

对张量中的所有元素进行求和,会产生一个单元素张量:

 

 广播机制如下面的例子:

矩阵a将复制自身的列,矩阵b将复制自身的行,然后对应元素相加。

 

可以使用索引来访问tensor的元素,下面的例子中,X的是2维的,它的每一个元素是一个向量,X[0]访问第一个向量,

X[0,0]访问第一个向量中的第一个值:

 特别地,可以用-1访问最后一个元素,用冒号":"进行连续访问:

 这里面的"1:3"表示访问“下标”为1的元素(即第二个元素)开始的,连续的元素,一直到下标为3的元素(不包括3,前闭后开)。

 

还有以下的用法,将矩阵后两行全部赋值0:

 将矩阵所有元素赋值0:

 

3.一个节省内存的方法

在为张量更新值的时候,如果只是简单的使用“x = expression”这样更新,则会为x分配一个新的内存。这样有两个不好的地方:

1. 机器学习中数据量很大,节约内存是有必要的。

2. 如果我们不原地更新,其他引用仍然可能指向旧的内存,这样可能会导致某些代码指向旧的参数。

原地更新的方法是:使用如x += 1代替x = x + 1 或使用切片:

 

4.Tensor与其他Python对象的转换

Pytorch的张量与Numpy的张量(ndarray)很容易相互转换:

 

 Pytorch的只有一个元素,大小为1的张量同样可以很轻松地转换为python标量,可以使用item()函数,或强制类型转换,

如float(),int()等:

 

标签:torch,tensor,reshape,元素,张量,Pytorch,使用,操作,数据
From: https://www.cnblogs.com/pkuqcy/p/17375198.html

相关文章

  • pgadmin4中view/edit data列名称右侧有小锁图标导致不能修改数据。
    pgadmin4中,view/editdata之后数据列名称旁边有个小锁的图片,导致不能修改数据。解决方法:之前创建表时没有primarykey,表加上primarykey即可,之后列名称之后的小图标变成了一支笔。例CREATETABLEjoe.tb1(idint,c1varchar(128),constraintpk_tb1_idprimarykey(id));......
  • PostgreSQL数据块损坏一例
           PostgreSQL数据块损坏一例原创七月流火紧到说2022-07-0609:00发表于四川背景数据库备份报错ERROR:invalidmemoryallocrequestsize18446744073709551613这种问题可以首先想到使用zero_damaged_pages自动修复,但遗憾的是并没有效果,这种方法......
  • PostgresQL-toast表数据损坏修复案例
    PostgresQL-toast表数据损坏修复案例pg_statistic-toast表块损坏修复当访问该表的时候报错:missingchunknumber0fortoastvalue59747165inpg_toast_2619首先我们要找到出问题的表:toast表的表名是字符串"pg_toast"与表tbl的oid"2619"拼接而成,可以直接查询oid=26191、......
  • python 创建虚拟环境以及数据迁移和.Django创建app
    一.python创建虚拟环境1.1首先要确认在那个位置创建虚拟环境创建命令virtualenv虚拟环境名称二.python数据迁移1.生成迁移文件pythonmanage.pymakemigrations2.同步到数据库中pythonmanage.pymigrate三.Django创建apppythonmanage.pystartappAPP名称......
  • PostgreSQL数据库支持中文拼音和笔画排序
    PostgreSQL数据库支持中文拼音和笔画排序1.前言默认安装,PG是不支持中文拼音和笔画排序的。1postgres=# select * from pg_settings where name ~ 'collate';2    name    | setting | unit |    category    |            short_d......
  • SSH客户端常用工具SecureCRT操作
    1.1SecureCRT工具介绍SecureCRT是一款支持SSH(SSH1和SSH2)协议的终端仿真软件,常被用来运行于Windows下远程登录UNIX或Linux服务器。SecureCRT软件功能强大,不仅仅支持SSH协议,同时还支持Telnet、RLogin、Serial和TAPI等协议,它有非常多的功能,这里就不一一介绍了,常用功能可见下文介绍......
  • 向量数据库
    1.向量概念向量是一种在数学和物理学中常用的概念,通常表示为一个有序的数值序列,可以用来表示空间中的位置、速度、加速度、力等物理量。多维度-->多个标量一个向量通常由多个标量组成,这些标量表示在不同维度上的数值。例如,在二维平面上,一个向量可以由两个标量x和y表示,其中x表示......
  • java基于springboot+vue的校园新闻网站、校园新闻管理系统,附源码+数据库+文档+PPT,适合
    1、项目介绍校园新闻网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、新闻类型管理、校园新闻管理、留言板管理、论坛交流、系统管理,用户前台:首页、校园新闻、论坛交流、留言反馈、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所......
  • 【大数据】Hive DDL 操作与视图讲解
    目录一、概述1)表和视图关系2)表与视图的区别二、环境准备三、Hive数据类型四、DDL操作1)表的基本语法2)列分隔符和行分隔符3)添加表数据方式1、INSERT方式2、LOADDATA方式3、外部表方式4)DDL常见操作1、创建表2、修改表3、删除表4、创建分区表5、创建外部表五、视图操作1)创建视图2......
  • 1.操作系统概述【操作系统:设计与实现】
    课程官网:https://jyywiki.cn/OS/2023/几个python的库:z3能求解方程组的python库sympy计算符号计算的库numpy数组、矩阵计算相关的学习的时候存在的一定的割裂性,因为不同学科之间存在概念的独立性,学科之间的互通也被打破了。主要的点是A学科用到了B学科的知识点,但A学科并......