代码创作世界——pytorch深度学习框架数据类型

news2024/11/25 20:39:50

代码创作世界——pytorch深度学习框架数据类型

torch中的数据类型张量(tensor)

pytorch中的

在数学中,一个单独的数可以成为标量,一行或者一列数组可以称为向量,一个二维数组称为一个矩阵,矩阵中的每一个元素可以被行和列所唯一确定,如果数组的维度超过2那么我们称该数组为张量Tensor。

但在pytorch中张量属于一种数据结构,它可以是一个标量、数组、向量、矩阵、甚至更高维的数组,它和numpy中的ndarray非常相似,在使用的过程中经常转换

数据类型dtypecpu tensorGPU tensor
32位浮点型torch.float32或torch.floattorch.FloatTensortorch.cuda.FloatTensor
64位浮点型torch.float64或torch.doubletorch.DoubleTensortorch.cuda.DoubleTensor
16位浮点型torch.float16或torch.halftorch.HalfTensortorch.cuda.HalfTensor
8位无符号整型torch.unit8torch.ByteTensortorch.cuda.ByteTensor
8位有符号整型torch.int8torch.CharTensortorch.cuda.CharTensor

torch中默认使用的数据类型是32位浮点数

张量的数据类型

在程序中使用torch.tensor()生成一个张量然后通过.dtype方法获取张量的数据类型,结果位32位浮点数。

import torch
torch.tensor([1.2,3.4]).dtype

在这里插入图片描述

使用set_default_tensor_type来设置默认的数据类型

torch.set_default_tensor_type(torch.DoubleTensor)
torch.tensor([1.2,3.4]).dtype

在这里插入图片描述

torch中还有其他的数据类型的数据,将浮点型转化为其他的数据类型的方法如下

a = torch.tensor([1.2,3.4])
a.dtype
a.int().dtype
a.long().dtype
a.float().dtype

在这里插入图片描述

获取默认数据集的方法

torch.get_default_dtype()

张量的生成

张量的生成可以有很多的方式,下面对生成的方式进行列举

  • (1)使用torch.tensor() python的列表或者序列可以通过torch.tensor()构造张量
A =  torch.tensor([[1.0,1.0],[2,2]])
A

在这里插入图片描述

张量的维度可以通过.shape查看,并使用.size()方法计算张量的形状的大小,使用.numel()方法计算张量中包含的元素的数量
例如:

# 获得张量的维度
A.shape
# 获得张量的形状
A.size()
# 计算张量中包括的元素的数量
A.numel()

在这里插入图片描述

在使用torch.tensor()函数的时,可以使用参数dtype来指定张量的数据类型,使用参数requires_grad来指定是否需要计算梯度。只有计算梯度的张量才能在深度网络优化时根据梯度的大小进行更新。

B = torch.tensor((1,2,3),dtype=torch.float32,requires_grad=True)
B

在这里插入图片描述
需要注意的是只有浮点型的数据才能计算梯度,其他的数据类型不能计算张量否则会报错

y= B.pow(2).sum()
y.backward()
B.grad

在这里插入图片描述

  • (2)使用torch.Tensor()函数来生成张量(可以根据形状生成指定的张量)
C = torch.Tensor([1,2,3,4])
C

在这里插入图片描述

也可以根据形状参数生成特定尺寸的张量。例如生成3x3的张量

D = torch.Tensor(3,3)
D

在这里插入图片描述

针对已经生成的张量可以使用torch.**_like()系列函数生成与指定张量相同性质相似的张量

# 创建一个和D大小相同且全是1的张量
torch.ones_like(D)

在这里插入图片描述

使用torch.zeros_like()函数生成与D维度相同的全为0的张量

torch.zeros_like(D)

在这里插入图片描述

使用torch.rand_like()函数生成与D维度相同的张量

torch.rand_like(D)

在这里插入图片描述

  • (3)张量与numpy数据的互换
    pytorch中提供了Numpy数组和张量互换的函数,非常方便对张量进行相关的操作

将numpy数组转化为pytorch张量,可以使用torch.as_tensor()函数和torch.from_numpy函数
举例如下:

import numpy as np
F = np.ones((3,3))
F
# 使用torch.as_tensor()函数
Ftensor = torch.as_tensor(F)
Ftensor
# 使用torch.from_numpy
Ftensor = torch.from_numpy(F)
Ftensor

在这里插入图片描述

使用torch.numpy()函数即可转化为Numpy数组

Ftensor.numpy()

在这里插入图片描述

总结

通过pytorch代码构造张量的过程,体现出了代码创造童话,共建快乐世界。

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

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

相关文章

编译安装nginx服务

目录 编译安装nginx服务 1.关闭防火墙,将安装nginx所需软件包传到/opt目录下 2.安装依赖包 3.创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制访问权限) 4.编译…

11.PasswordEncoder详解与实战

security/day07 这节课我们开始讲PasswordEncoder,如果大家还有印象的话,我们前面有提到过PasswordEncoder: 为什么密码使用{noop}开头呢?我们也做出了相应的解释,这节课开始带大家真正的了解PasswordEncoder, PassworderEncoder…

Android以aar包形式引入hunter-timing,Java(4)

Android以aar包形式引入hunter-timing,Java(4) (1)参照这篇文章: https://zhangphil.blog.csdn.net/article/details/130603231https://zhangphil.blog.csdn.net/article/details/130603231 生成.aar文件…

路径规划算法:基于象群优化的路径规划算法- 附代码

路径规划算法:基于象群优化的路径规划算法- 附代码 文章目录 路径规划算法:基于象群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法象群…

python基础知识(六):列表

目录 1. 列表及其创建2. 列表的特点3. 获取指定元素的索引4. 获取列表中指定索引的元素5. 列表的切片操作6. 列表元素的判断及遍历7. 列表元素的添加操作8. 列表的删除9. 列表元素的修改10. 列表元素的排序11. 列表生成式 1. 列表及其创建 列表由一系列按特定顺序排列的元素组…

如何设计一份优秀的 PPT 文档?

设计一份优秀的 PPT 需要考虑以下几个方面: 目标和受众:明确你的 PPT 的目标是什么,以及你的受众是谁。这将帮助你确定内容的重点和风格。结构和流程:确定清晰的结构和流程,使你的 PPT 有逻辑性。使用标题、副标题和分…

算法与数据结构(三)——排序算法大总结

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序 一、插入排序二、选择排序三、冒泡排序四、归并排序 一、插入排序 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫…

三、DMSP/OLS、NPP/VIIRS等夜间灯光数据能源碳排放空间化——灯光指数计算(二)

一、前言 续上一节,建成区提取方式有很多种,本文主要介绍一种区别于参考比较法、突变检测法等的领域分析提取建成区范围。 本文以广州市为例,基于领域分析提取2020年广州市建成区范围。 二、具体步骤 (1)加载数据并将广州市夜间灯光数据提取出来 (2)搜索"邻域…

【前端】Vue项目中 JSON 编辑器的使用

Vue项目中 JSON 编辑器的使用 一、背景描述二、vue-json-edit2.1 依赖安装2.2 示例代码2.3 效果图 三、vue-json-pretty3.1 依赖安装3.2 示例代码3.3 效果图 四、bin-code-editor4.1 依赖安装4.2 示例代码4.3 效果图 五、vue-json-views5.1 依赖安装5.2 示例代码5.3 效果图5.4 …

json库——jsoncpp

一、jsoncpp简介 JsonCpp是一个开源的C库,用于解析和生成JSON(JavaScript Object Notation)数据格式。JSON是一种轻量级的数据交换格式,广泛用于各种应用程序和网络服务中。 JsonCpp提供了简单和易用的API,可以方便地解…

C Primer Plus第十七章编程练习答案

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 有些题目函数定义在书本存在&#xff…

路径规划算法:基于鸽群优化的路径规划算法- 附代码

路径规划算法:基于鸽群优化的路径规划算法- 附代码 文章目录 路径规划算法:基于鸽群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法鸽群…

Python编程面试题及答案(20例)

以下是一些常见的Python编程面试题以及它们的答案: 1.解释Python中的 GIL(全局解释器锁)是什么,它对多线程编程有什么影响? 答案:GIL是Python解释器中的一个机制,它确保在任何给定时间只有一个…

超详细Redis入门教程——Redis 主从集群(上)

前言 本文小新为大家带来 Redis 主从集群 相关知识,具体内容包括主从集群搭建(包括:伪集群搭建与配置,分级管理,容灾冷处理),主从集群搭建(包括:主从复制原理&#xff0c…

MySQL数据库从入门到精通学习第7天(表数据的增、删、改操作)

表数据的增、删、改操作 使用INSERT...VALUES语句插入数据修改数据删除数据 使用INSERT…VALUES语句插入数据 语法: INSERT [INTO] 数据表名[(字段名...)] VALUES ({值 | DEFAULT},...),()...; [INTO] 数据表名:可选项,用于指定被操作的数…

手把手教你rtsp流媒体分析(引导篇,欢迎订阅专栏)

系列音视频开发 文章目录 系列音视频开发前言一、RTSP是什么?二、RTP是什么?三、RTCP是什么?四、RTSP 源码学习五、H265 RTSP流总结 前言 在安防行业中,onvif协议与gb协议是两种标准,gb是国内安防行业的标准&#xff…

Go Web下gin框架使用(二)

〇、gin 路由 Gin是一个用于构建Web应用程序的Go语言框架,它具有简单、快速、灵活的特点。在Gin中,可以使用路由来定义URL和处理程序之间的映射关系。 r : gin.Default()// 访问 /index 这个路由// 获取信息r.GET("/index", func(c *gin.Con…

康耐视In-Sight2800相机的使用

In-Sight2800相机注册分类程序 一、登录相机 二、图像导入 IS相机支持拍摄图像和从文件中导入图像 如选择从文件中导入图像,文件夹选择位置在页面左下方,如下图 三、注册分类器 在检查模块注册分类器,注册图像需要一张一张去学习&#x…

儿童节到了,我用HTML和CSS画了一个小朋友

文章目录 前言一、关于HTML和CSS二、开始编码2.1 在HTML正文中配置好元素2.2 开始写各个元素的CSS2.3 效果图展示 总结 前言 官方告知我今天参加活动会得勋章,于是想了半天,总得创作一点东西,于是翻出来多年前的箱底技术,用CSSHT…

Kubernetes集群架构与组件介绍

个人博客 一、集群架构 二、主要组件 1.kubelet 该组件运行在每个Kubernetes节点上,用于管理节点。用来接收、处理、上报kube-apiserver组件下发的任务。 主要负责所在节点上的Pod资源对象的管理,例如Pod资源对象的创建、修改、监控、删除、驱逐及Pod…