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()等:

Pytorch数据操作的更多相关文章

  1. pytorch 数据操作

    数据操作 在深度学习中,我们通常会频繁地对数据进行操作.作为动手学深度学习的基础,本节将介绍如何对内存中的数据进行操作. 在PyTorch中,torch.Tensor是存储和变换数据的主要工具.如果你 ...

  2. 【转载】PyTorch系列 (二):pytorch数据读取

    原文:https://likewind.top/2019/02/01/Pytorch-dataprocess/ Pytorch系列: PyTorch系列(一) - PyTorch使用总览 PyTorc ...

  3. Pytorch数据读取框架

    训练一个模型需要有一个数据库,一个网络,一个优化函数.数据读取是训练的第一步,以下是pytorch数据输入框架. 1)实例化一个数据库 假设我们已经定义了一个FaceLandmarksDataset数 ...

  4. PyTorch数据加载处理

    PyTorch数据加载处理 PyTorch提供了许多工具来简化和希望数据加载,使代码更具可读性. 1.下载安装包 scikit-image:用于图像的IO和变换 pandas:用于更容易地进行csv解 ...

  5. PyTorch 数据并行处理

    PyTorch 数据并行处理 可选择:数据并行处理(文末有完整代码下载) 本文将学习如何用 DataParallel 来使用多 GPU. 通过 PyTorch 使用多个 GPU 非常简单.可以将模型放 ...

  6. StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...

  7. hive数据操作

    mdl是数据操作类的语言,包括向数据表加载文件,写查询结果等操作 hive有四种导入数据的方式 >从本地加载数据 LOAD DATA LOCAL INPATH './examples/files ...

  8. Dapper 数据操作框架

    数据操作DapperFrom NuGet:Install-Package DapperorInstall-Package Dapper.StrongName微型ORM:PetaPoco获得PetaPo ...

  9. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

  10. coreData数据操作

    // 1. 建立模型文件// 2. 建立CoreDataStack// 3. 设置AppDelegate 接着 // // CoreDataStack.swift // CoreDataStackDe ...

随机推荐

  1. JavaScript 字符串的相关方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. tag 总结

    通用的: (((masterpiece))),((best quality)),ultra-detailed,extremely detailed CG unity 8k wallpaper,best ...

  3. Springboot jar 打包脚本和启动脚本

    说明: SpringBoot极大的提高了工作效率,集成了各大厂优秀的组件,好处就不多说了,使用配置也非常方便,本文主要讲解如何使用更方便的方式打包发布,利用SpringBoot的新特性内置tomcat ...

  4. mysql查询近N天的数据

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...

  5. #HDU2255#奔小康赚大钱(KM模板题)

    Problem Description传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子.这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑 ...

  6. obs推流核心流程分析

    前置步骤和录屏是一样的,见我的上一篇文章 https://www.cnblogs.com/billin/p/17219558.html bool obs_output_actual_start(obs ...

  7. CF1037H Security题解

    根据字典序的定义,位置大的大于长度长的,长度长的大于长度短的. 所以我们贪心,先追求长度长的,再追求后面的位置大的,再追求前面的位置大的. 我们要一个能遍历子串的结构,就选 SAM 得了. 还有个限制 ...

  8. Redis 缓存雪崩 |击穿 |穿透 概念及解决方案

    一.雪崩 1.概念  指某一时间段,缓存集中过期失效,无数的请求绕开缓存,直接访问数据库. 2.解决方案 让redis数据永不过期,这种方式最可靠的.最安全的,但占用空间,内存消耗大,并且不能保持数据 ...

  9. 【Visual Leak Detector】配置项 ForceIncludeModulesmd

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇介绍 VLD 配置文件中配置项 ForceIncludeModules 的使用方法. 同系列文章目录可见 <内存泄漏检测工具&g ...

  10. 【小白晋级大师】如何设计一个支持10万人用的ChatGPT对接系统

    不停地书写,方能不失在人海茫茫. 1.前言 之前给大家写了ChatGPT对接企业微信的教程,具体可看知乎链接: [奶奶看了都会]ChatGPT3.5接入企业微信,可连续对话 文章结尾说了教程只能适用于 ...