pytorch张量数据类型

2023-09-22 10:30:31

python常用数据类型在pytorch中的对应

pythonPyTorch
IntIntTensor of size()
floatFloatTensor of size()
Int arrayIntTensor of size [d1, d2,…]
float arrayFloatTensor of size[d1, d2,…]
string- -

pytorch不是一个完备的语言库,而是一个面向数据计算的GPU加速库,对str字符类型没有直接支持的对应数据类型。

在免不了要处理str的情况下,那要如何表达str呢
	1、One-hot
		[0,1,0,0,...]
		如表达猫狗两类别
	2、Embedding(NLP):
		Word2vec
		glove

在这里插入图片描述

torch常用内置数据类型

在这里插入图片描述

数据类型推断

a为二维tensor数据,随机初始化两行三列数据
a.type() 返回一个字符串告诉a,其tensor的类型
type(a) 返回a的数据类型
isinstance(a,某tensor数据类型) 参数合法化检验,如果a跟该tensor数据类型一致,返回True

在这里插入图片描述
注:CPU和GPU的tensor不是同一类型,可以使用.cuda(),a.cuda()可以返回一个gpu上的引用
在这里插入图片描述

标量

标量是最简单的数据类型,dim为0
在python中直接表示为1.0、1.3,pytorch中的表示为:

torch.tensor(1.)
torch.tensor(1.3)
注:1.3是0维,但[1.3]是一维,长度为1的tensor

在这里插入图片描述
标量的shape:

a = torch.tensor(2.2)
a.shape 或者 a.size()
# 因为a是一个标量,会返回一个空的list类型的size
len(a.shape) 或者用 a.dim()
# 结果都会返回0的大小

向量

在torch中都统一称为张量

dim = 1时

torch.tensor([x1,x2,...])
#dim=1,张量长度可以为1,2,。。。

torch.FloatTensor(n)
#随机生成长度为n的一维张量

也可以从numpy引入
先通过numpy方法生成长度为n的向量
data = np.ones(n)
再使用 torch.from_numpy(data)引入
# 或者直接 torch.ones(2)

在这里插入图片描述
注: 主要用在 1、Bias,2、batch为1,dim为1.图片打平后的线性输入。

dim = 2时

随机初始化一个两行三列张量a
a = torch.randn(2,3)

a的尺寸:
a.shape
a.size()

具体看某一维度大小
a.shape[0] / a.shape[1]
a.size(0) / a.size(1)

在这里插入图片描述

dim = 3时

三维使用场景比较广泛,如 RNN语言处理
假如有5句话,每句话10个单词,batch设置每次处理8个单词
则输入为[8,5,10]

a = torch.rand(1,2,3)
# 生成三维张量
a.shape
a.[0] # ->(2,3)
list(a.shape)
#将a的尺寸格式转化为python通用列表

在这里插入图片描述

dim = 4时

较广泛适用于图片数据处理,如CNN:[b, c, h, w]
在这里插入图片描述

在这里插入图片描述
a.dim()查询维度为4
a.numel()
#a占有内存的数量,2328*28

更多推荐

Leetcode.213 打家劫舍 II

题目链接Leetcode.213打家劫舍IImid题目描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金

Golang 的 GMP:并发编程的艺术

前言在Golang的并发编程中,GMP是一个重要的概念,它代表了Goroutine、M(线程)和P(调度器)。这个强大的三位一体的并发模型使得Golang在处理并发任务时非常高效和灵活。通过GMP的组合,Golang实现了一种高效的并发模型。它充分利用了多核处理器的优势,并通过轻量级的Goroutine实现了高并发的编

typescript 高级类型-class类详解

class简介typescript全面支持es2015中引入的class关键字,并为其添加了类型注解,和其它语法(比如,可见性修饰符等),class基本使用,如下tips1.根据ts中的类型推论,可以知道Person的实例对象p的类型是Person2.ts中的class,不仅提供了class的语法功能,也作为一种类型存

坚鹏:浙江农商联合银行同业核心产品解读与差异化分析培训第8期

浙江农商联合银行同业核心产品解读与差异化分析培训第8期1952年,浙江第一家农村信用社成立。2004年4月18日,浙江省农信联社成立,承担对全省农信社的管理、指导、协调和服务职能。2021年10月,经国务院批准同意、银保监会批复,浙江成为全国深化农信社改革“第一单”。2022年4月18日,省委书记袁家军,省委副书记、省

华清 Qt day1 9月15

.pro:QT+=coregui#引入QT所需要的核心库core,gui为图形开发相关类库greaterThan(QT_MAJOR_VERSION,4):QT+=widgets#表示如果超过4.0版本会自动加上widgets类库CONFIG+=c++11#表示支持C++11后的版本#Thefollowingdefine

SMS--短信服务

1短信服务介绍短信服务(ShortMessageService)是阿里云为用户提供的一种通信服务的能力。2短信服务使用接下来,我们使用短信验证码功能来演示短信服务的使用。流程如下:2.1准备工作2.1.1实名认证https://help.aliyun.com/document_detail/48263.html?spm

Algorithm基础算法学习

算法学习贪心算法贪心算法简介:这种算法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。这就好像一个贪婪的人,他事事都想要眼前看到最好的那个,看不到长远的东西,也不为最终的结果和将来着想,贪图眼前局部的利益最大化

JMM内存模型

JMM概念JMM:JavaMemoryModel(JAVA内存模型)。是Java语言中用于定义多线程并发访问共享内存的规范。它规定了多线程环境下,如何保证共享内存的一致性和可见性,以及如何协调多个线程之间的操作。主内存和工作内存(本地内存)JMM将内存划分为主内存和每个线程的工作内存。主内存是所有线程共享的内存,而每个

二级配电箱智能监测系统

随着现代电力工业的发展,电力系统的复杂性和安全性要求日益提高。二级配电箱作为电力系统的重要环节,其运行状态直接影响到电力供应和电力系统的稳定性。因此,对二级配电箱进行智能监测显得尤为重要。本文将探讨如何实现二级配电箱的智能监测。一、配电箱智能监测系统架构力安科技通过在配电箱/柜场所安装“智慧供配电综合探测器”前端物联探

检索技术核心学习总结

一、学习检索技术的必要性分析(一)关键原因分析学习检索技术(InformationRetrieval,IR)具有多种重要的原因,特别是在今天信息爆炸的数字化时代。总的来说,学习检索技术有助于提高信息处理和利用的效率,无论是个人生活还是在职业和学术领域中。这些技能可以增强信息搜索、分析和组织的能力,有助于更好地满足各种需

【eslint】屏蔽语言提醒

在JavaScript中,ESLint是一种常用的静态代码分析工具,它用于检测和提醒代码中的潜在问题和风格问题。有时候,在某些特定情况下,你可能希望临时屏蔽或禁用某些ESLint的提醒信息,以便消除不必要的警告或避免不符合项目规范的代码被标记为错误。例如,当你遍历一个dom数组,并想要修改每个item的dom元素的st

热文推荐