-
Variable 是torch.autograd中的数据类型(之前)
- 主要用于封装Tensor,进行自动求导
- data:被包装的Tensor
- grad:data的梯度
- grad_fn:创建Tensor的Function,是自动求导的关键
- requires_grad:指示是否需要梯度
- is_leaf:指示是否是叶子结点(张量)
-
Pytorch0.4.0版开始,Variable并入Tensor
- dtype:张量的数据类型,如:torch.FloatTensor,torch.cuda.FloatTensor
- shape:张量的形状,如(64,3,224,224)
- device:张量所在设备,GPU/CPU,是加速的关键
-
张量的创建
-
一、直接创建
-
方法1:torch.tensor()
- 功能:从data创建tensor
- data:数据,可以是list,numpy
- dtype:数据类型,默认与data一致
- device:所在设备,cuda/cpu
- requires_grad:是否需要梯度
- pin_memory:是否存于锁页内存
-
方法2:torch.from_numpy(ndarray)
- 功能:从numpy创建tensor
- 注意事项:从torch.from_numpy创建的tensor于原ndarray共享内存,当修改其中一个的数据,另外一个也被改动
-
-
二、依据数值创建
-
方法1:torch.zeros()
- 功能:依size创建全0张量
- size:张量的形状,如(3,3)、(3,224,224)
- out:输出的张量
- layout:内存中布局形式,有strided(通常使用),sparse_coo(稀疏张量可能用到)等
- device:所在设备,gpu/cpu
- requires_grad:是否需要梯度
-
方法2:torch.zeros_like()
- 功能:依input形状创建全0张量
- intput:创建与intput同形状的全0张量
- dtype:数据类型
- layout:内存中布局形式
- 方法3:torch.ones()
-
方法4:torch.ones_like()
- 功能:依input形状创建全1张量
- size:张量的形状,如(3,3)、(3,224,224)
- dtype:数据类型
- layout:内存中布局形式
- device:所在设备,gpu/cpu
- requires_grad:是否需要梯度
- 方法5:torch.full()
-
方法6:torch.full_like()
- 功能:依input形状创建全0张量
- size:张量的形状,如(3,3)
- fill_value:张量的值
-
方法7:torch.arange()
- 功能:创建等差的1维张量
- 注意事项:数值区间为[start,end),这个区间是半闭半开的,取不了end\
- start:数列的起始值
- end:数列的“结束值”
- step:数列公差,默认为1
-
方法8:torch.linspace()
- 功能:创建均分的1维张量
- 注意事项:数值区间为[start,end]
- start:数列的起始值
- end:数列的结束值
- steps:数列长度
-
方法9:torch.logspacce()
- 功能:创建对数均分的1维张量
- 注意事项:长度为steps,底为base
- start:数列起始值
- end:数列结束值
- steps:数列长度
- base:对数函数的底,默认为10
-
方法10:torch.eye()
- 功能:创建单位对角矩阵(2维张量)
- 注意事项:默认为方阵
- n:矩阵的行数
- m:矩阵的列数
-
-
三、依据概率创建
-
方法1:torch.normal()
- 功能:生成正态分布(高斯分布)
- mean:均值
- std:标准差
-
四种模式:
- mean为标量,std为标量
- mean为标量,std为张量
- mean为张量,std为标量
- mean为张量,std为张量
- 方法2:torch.random()
-
方法3:torch.randn_like()
- 功能:生成标准正态分布
- size:张量的形状
- 方法4:torch.rand()
-
方法5:torch.rand_like()
- 功能:在区间[0,1)上,生成均匀分布
- 方法6:torch.randint()
-
方法7:torch.randint_like()
- 功能:区间[low,high]生成整数均匀分布
- size:张量的形状
-
方法8:torch.randperm()
- 功能:生成从0到n-1的随机排列
- n:张量的长度
-
方法9:torch.bernoulli()
- 功能:以input为概率,生成伯努利分布(0-1分布,两点分布)
- input:概率值
-
-