欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

pytorch学习笔记之pytorch基础一(基本数据类型、创建Tensor)

时间:2023-05-23
pytorch基础一

基本数据类型

数据类型类型检验维度(dimension)

0维1维2维3维4维 创建Tensor

np转换torch.empty()torch.tensor() / torch.Tensor()torch.set_default_tensor_type()torch.full( [a,b] ,c)torch.randn() / torch.normal()arange / rangetorch.linspace() /torch.logspace()torch.one/zero/eyetorch.randperm 基本数据类型 数据类型

在Python中,我们常用 int, float 等表示数据类型;在Pytorch中则统一为不同的 张量(tensor) 形式 。同时,在CPU和GPU中,表示的方式也有区别,在GPU中的类型需额外增加 .tensor (即使是同一个数据,放在不同的位置,其类型也是不同的)
类型检验 可以采用 a.type() 的方式将数据类型打印出来也可以采用 type(a) 的方式 ,但此方式只能显示张量的总类型,故不常用在程序中往往采用 isinstance() 的方式判断是否为期望类型
维度(dimension)

注:通过 .dim() 或 len(a.shape) 可以直接获取维度数;通过*.nmel()** 可以获取数据大小*

0维

dimension为0 ,称之为标量,直接用 torch.tensor(a) ,(a为任意常数) 的方式表示 (一般用于表示loss的值)可以使用 .shape() 获取大小 ,可以得到 torch.size([ ]) 的输出,代表 dim 为0
1维

dimension为1 ,称之为一维向量,使用torch.tensor(a,b) ,(a,b为任意常数) 来表示一个确定的一维向量 (a,b), 或torch.FloatTensor(a) ,(a为任意常数) 来表示一个随机生产的一维向量,a代表数据的个数 (一般用于表示bias、liner input的值)
2维

dimension为2 ,称之为二维向量,使用torch.randn(a,b) ,(a,b为任意常数) 来随机创建一个a行b列的矩阵 (randn为随机正太分布) (常用于linerinput)使用 .shape 可以获得该值的行数和列数;使用 .shape[ 0 ] 可以获得行数; .shape[ 1 ] 获得列数使用 .size( 0 ) 可以获得行数;.size( 1 ) 可以获得列数(注意:这里的括号为圆括号,shape为方括号)
3维

dimension为3 ,称之为三维向量,使用torch.rand(a,b,c) ,(a,b,c为任意常数) 来随机创建一个三维的矩阵 (rand为随机均匀分布)常用于RNN,用于NLP的文字处理,三维分别表示:单词数,句子数和特征直观上可与从最左边开始数,有几个方括号就是几维,其余内容基本同上 4维

dimension为4 ,称之为四维向量,使用torch.rand(b,c,h,w) ,(b,c,h,w为任意常数) 来随机创建一个四维的矩阵 (rand为随机均匀分布)常用于CNN,四维数据分别表示为:b->单次传入的图片数量(batch_size);c->通道数;h,w->图片的宽高 创建Tensor np转换

先通过 np、array() 等方式创建numpy数组;再通过 torch.from_numpy() 将数组转化为 tensor torch.empty()

可以通过 torch.empty() 创建一个未初始化的tensor,输入为大小shape torch.tensor() / torch.Tensor()

直接通过 torch.tensor() 或 torch.Tensor() 创建 tensor数组

*注意: 小写的 .tensor() 内只能输入确定的值;而大写的 .Tensor() 则可以 输入大小shape 作为初始化,如, .Tensor(a,b) ;也可以 直接输入确定的值,如 .Tensor([a,b])

一般来说,使用 .Tensor() 时输入 shape ;使用 .tensor() 时输入确定的值 torch.set_default_tensor_type()

可以使用 torch.set_default_tensor_type() 指定默认的参数类型,如,下例,将默认参数类型改为 Double_Tensor
torch.full( [a,b] ,c)

使用 torch.full( [a,b] ,c) 将[a,b]的值全部赋值为c,[a,b] 可以为空 torch.randn() / torch.normal()

使用 torch.randn() ,输入为shape ,创建一个已知shape的随机数列使用 torch.normal() ,随机创建均匀分布数列,例子如下
arange / range

在torch中一般用arange创建一个左闭右开的联系数组(注意,一般不用range)举例如下(第三个参数为步长):
torch.linspace() /torch.logspace()

torch.linspace() 创建一个等分的等差数列 ,注意这里区别于arange,torch.linspace 区间是左闭右闭的torch.logspace() 创建规则与 torch.linspace() 类似,相当于对 torch.linspace() 的每个值多一个10的底,每个元素都是十的几次方
torch.one/zero/eye

torch.one 创建全1矩阵torch.zero 创建全0矩阵torch.eye(a) ,创建一个对角线为1,其余元素为0的对称阵(a阶单位阵) torch.randperm

torch.randperm 生成一个左闭右开的随机索引

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。