当前位置: 移动技术网 > IT编程>脚本编程>Python > Pytorch的Tensor操作(1)

Pytorch的Tensor操作(1)

2020年07月30日  | 移动技术网IT编程  | 我要评论
类型推断torch.randn():随机初始化a.type():返回类型type():返回基本类型isinstance() :检查类型cuda会影响数据类型标量维度(dimention)为0的标量标量的shape:返回类型为【】(空的list),返回长度也为0a.dimension()也为0Dim1torch.tensor() : 输入具体数据torch.FloatTensor() :输入类型大小Dim1的shapeD...

 

类型推断

torch.randn():随机初始化

a.type():返回类型

type():返回基本类型

isinstance() :检查类型

cuda会影响数据类型

标量

维度(dimention)为0的标量

标量的shape:

返回类型为【】(空的list),返回长度也为0

a.dimension()也为0

Dim1

torch.tensor() : 输入具体数据

torch.FloatTensor() :输入类型大小

Dim1的shape

Dim2

Dim3

Dim4(一般用于图像)


创建Tensor

import from numpy

从numpy转化为tensor类型, 数据类型(float)不变,变量类型(np→numpy)变了

生成未初始化tensor

设置默认类型

随机初始化

torch.rand() :随机采样【0,1】之间的数

torch.rand_like(a): 采样出与a相同类型的tensor

torch.randint(min,max,[type]):不包含最大值

正态分布随机初始化

torch.normal(mean,std): 自定义的正态分布,需要给出相同数量的均值和方差

重复填充

torch.full():类型为[]时,表示生成的为标量

范围

torch.arange():生成不包含最大值的等差数列

torch,linspace(min,max,steps= ):包含最大值,steps是切分后的数量

全1/零/单位矩阵

torch.eye():中如果不是方阵,多余部分为0

随机打散

torch.randperm(): 生成不包含最大值的索引

下面对第一维进行shufflerandperm中的参数必须与类型的第一维相同。abidx相同,防止匹配错误

下图表示,randperm中定义需要两个索引时,分别返回a b的对应索引值


切片和索引 

索引

取不到“ 的元素

-1表示最后一个元素

分段采样

出现两个“”表示的是:start :end :step(默认为1,为1可省略)

指定维度采样

... ”:表示同时取多个维度,只能全选或已知前后具体采样维度,剩下的全选,某一维度取“1”时,会自动降维

根据MASK选择

先根据条件,得到一定的掩码,根据满足条件的掩码值重新在原始数据中进行选择

铺展(Flatten)索引值


纬度变化

View Reshape

增维(Unsqueeze)

下面的a为标量,在第0维与第1维添加维度后,分别会变为[1,2] [2,1]

下面是bias向权重类型变化过程

降维(squeeze)

如果没有具体参数,将去除所有为“1”的维度

带有参数,将对对应维度进行去除

扩展(expand)

总维度必须相同,且只能从1维度扩展到指定维度或直接相同 

“-1”保持原来维度不变

重复(repeat)

与expand参数不同,每个维度的值表示对对应维度进行的重复次数。

矩阵转置(transpose)

下面两行函数说明,即使前后的总体数据类型的大小相同,但是相同维度所表示的意义也进行了交换,因此不再表示同一Tensor

permute

可以自动调用transpose,并保证维度顺序的顺利交换

 

本文地址:https://blog.csdn.net/qq_42518956/article/details/107621610

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网