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

代码创作世界——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代码构造张量的过程,体现出了代码创造童话,共建快乐世界。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

市值蒸发21亿港元,王一博还能拉着乐华走多久?

5月22日,#乐华被冻结2390万财产#话题冲上热搜。 近日,头顶“王一博”光环的乐华娱乐集团(下称“乐华娱乐”,02306.HK)交出了上市后的首份财报。 4月25日,财报公布的首个交易日,其股价下跌2.06…

商代数与积代数

商代数 设 R R R使 A < S , ∗ 1 , ∗ 2 , ⋯ , ∗ n > A \left<S, *_1, *_2,\cdots, *_n\right> A⟨S,∗1​,∗2​,⋯,∗n​⟩上的同余关系&#xff0c;则 R R R使 S S S上的等价关系&#xff0c;因此 R R R可诱导出 S S S的一个划分 S / R { [ a ] R ∣ a ∈…

【Linux】Linux环境基础工具的基本使用及配置(yum、vim)

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;Linux &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 Linux软件包管理器 - y…

【深入浅出Spring Security(二)】Spring Security的实现原理

Spring Security的实现原理 一、实现原理二、内置Filter以及默认加载的Filter三、自动配置分析&#xff08;SpringBootWebSecurityConfiguration&#xff09;ConditionalOnMissingBean 四、自己配置SecurityFilterChain 一、实现原理 在 Spring Security 中&#xff0c;认证、…

高压功率放大器ATA4014VS高压功率放大器HSA42014

高压功率放大器ATA4014VS高压功率放大器HSA42014 一、企业背景&#xff1a; Aigtek是一家来自中国的专业从事测量仪器研发、生产和销售的高科技企业。公司主要研发和生产功率放大器、功率放大器模块、功率信号源、计量校准源等产品。核心团队主要是来自西安交通大学及西北工业大…

LiangGaRy-学习笔记-Day17

1、磁盘的介绍 自动分区、手工分区、命令工具分区 1.1、磁盘分类 根据介质来区分&#xff1a; 机械硬盘和固态硬盘 通过盘大小&#xff1a; 3.5英寸和2.5英寸 通过接口分类&#xff1a; SAS、SATA、FC scisi 根据功能&#xff1a; 桌面和企业级别 1.2、磁盘类型 HD…

数据在内存中的存储(1)——整形

目录 1、数据类型介绍 1.1、类型的基本归类 整形家族 浮点数家族 指针类型 空类型 构造类型 2、整形在内存中的存储 2.1、原码、反码、补码 2.2、大小端介绍 2.3、有符号与无符号 2.4、练习 例一 例二 例三 例四 例五 1、数据类型介绍 我们先来简单了解一下我们前面所学的基…

STM32F4_软件模拟SPI

目录 1. 硬件连接 2. SPI通讯协议 3. W25Q64 简介 4. 程序详解 4.1 main.c 4.2 SPI.c 4.3 SPI.h 4.4 W25Q128.c 4.5 W25Q128.h 4.6 OLED.c 4.7 OLED.h 4.8 OLED_Font.h 5. 实验结果 我们都知道&#xff0c;SPI 和 IIC 一样&#xff0c;都可以通过硬件方式和软件方…

Phaser笔记-精灵(sprite)的使用

如下&#xff1a; 使用逻辑如下&#xff1a; ①设置好physics&#xff1b; ②将资源添加到spritesheet&#xff1b; ③在physics中添加sprite&#xff1b; ④创建anims&#xff1b; ⑤播放anims&#xff1b; 完整代码如下&#xff1a; import phaser;class PlayGame exte…

Linux 系统上的库文件生成与使用

1.库文件 库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在&#xff1a;/lib 和 /usr/lib。 在 64 位的系统上有些库也可能被存储在/usr/lib64 下。库的头文件一般会被存储在 /usr/include 下或其子目录下。 库有两种&#xff0c;一种是静态库&#xff0c;其…

springboot + vue3实现视频播放Demo(video.js Vue3-video-play视频播放器)

文章目录 学习链接前言ffmpeg安装ffmpeg配置环境变量分割视频文件 后台配置WebConfig 前端代码video.js示例安装依赖视频播放组件效果 Vue3-video-play示例安装依赖main.js中使用视频播放组件效果 学习链接 ffmpeg官网 长时长视频java存储及vue播放解决方法 【 攻城略地 】vue…

Packet Tracer - 配置区域策略防火墙

Packet Tracer - 配置区域策略防火墙 拓扑 地址表 设备 接口 IP地址 子网掩码 默认网关 交换机端口 R1 F0/1 192.168.1.1 255.255.255.0 N/A S1 F0/2 S0/3/0 (DCE) 10.1.1.1 255.255.255.252 N/A N/A R2 S0/3/0 10.1.1.2 255.255.255.252 N/A N/A S0/3…

C++ priority_queue

C priority_queue &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了优先队列的对应接口的使用 文章目录…

[GUET-CTF2019]number_game[数独]

目录 题目 学到的知识点&#xff1a; 题目 在buu上看到了一道数独题&#xff0c;没见过&#xff0c;记录一下 下载附件&#xff0c;查壳&#xff0c;无壳&#xff0c;在IDA中打开&#xff0c;直接找到主函数 unsigned __int64 __fastcall main(int a1, char **a2, char **a3…

工程swift与OC混编改造

最近公司项目准备引入swift&#xff0c;由于目前工程已经完成了组件化不再是简单的单仓工程&#xff0c;所以需要进行混编改造。下面记录一下自己对工程进行混编改造的思考以及过程。 混编原理 看了很多文档&#xff0c;比较少有讲混编原理的&#xff0c;这里简单介绍一下语言…

springboot+springsecurity+jwt+elementui图书管理系统

​​图书管理系统​​ 关注公号&#xff1a;java大师&#xff0c;回复“图书”&#xff0c;获取源码 一、springboot后台 1、mybatis-plus整合 1.1添加pom.xml <!--mp逆向工程 --><dependency><groupId>org.projectlombok</groupId><artifactId&…

子串--子字符串 0528

210102 201012 A1A2…An An…A2A1 如何做&#xff0c; 翻转的是21&#xff0c;因为2>1; 翻转的是210&#xff0c;因为2>0; 翻转的是2101&#xff0c;因为2>1&#xff1b; 翻转的是21010&#xff0c;因为2>0&#xff1b; 翻转的是210102&#xff0c;因为22且1&…

2023-05-29 用 fltk gui库编写一个打字练习程序

用 fltk gui库编写一个打字练习程序 前言一、FLTK GUI 库二、使用步骤1.引入库2.使用代码 总结 前言 给孩子练习键盘打字, 发现终端还是欠点意思, 研究了一下gui, 最终用 fltk库弄了一个. 对于没有接触过gui的人, 发现, 编程的逻辑和终端区别很大, 很繁琐, 可能需要适应适应,…

0基础学习VR全景平台篇第32章:场景功能-嵌入视频

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 一、本功能将用在哪里&#xff1f; 嵌入功能可对VR全景作品嵌入【图片】【视频】【文字】【标尺】四种不同类型内容&#xff1b; 本次主要带来视频类型的介绍&#xff0c;通过嵌入视频功能&#xff0c;…

Go语言并发

Go语言并发学习目标 出色的并发性是Go语言的特色之一 • 理解并发与并行• 理解进程和线程• 掌握Go语言中的Goroutine和channel• 掌握select分支语句• 掌握sync包的应用 并发与并行 并发与并行的概念这里不再赘述, 可以看看之前java版写的并发实践; 进程和线程 程序、进程…