1 张量(Tensor)
- 标量:0维张量
- 向量:1维张量
- 矩阵:2维张量
- Variable数据类型(torch.autograd中数据类型,用来封装Tensor):
- data: 被封装的Tnsor
- grad:data的梯度
- grad_fn: Tensor的函数,用来计算导数
- requires_grad: 梯度计算标志位
- is_lead:是否是叶子节点,用于计算图中
Variable已经引入到torch.Tensor并且多了两个参数:
dtype:data的类型
shape:张量形状
device:张量所在设备
2 张量创建
2.1 直接创建
- torch.tensor():
- data: 数据,list numpy都可以
- dtype,device,requires_grad:如上
- pin_memory:是否用于锁页内存,与效率有关
- torch.from_numpy(ndarray):
- 从numpy创建tensor
注:此方法创建的tensor与原ndarray共享原内存,即一个改动,另一个页改动。
2.2 依据数值创建
- torch.zeros():
- size:张量形状
- out:输出的张量,和等号赋值一个功能。
- layout:内存中布局形式,strided,sparse_coo,内存效率有关
device,requires_grad同上
- torch.zeros_like():
按input形状创建张量
- input:一个张量。
- 其他参数如上。
- torch.ones():
与zeros同。
同样有ones_like()
- torch.full():
size:张量形状
fill_value:张量的值
同样有full_like()
- torch.linspace():
创建一个均分的1维张量
- start:数列起始值
- end:数列结束值
- steps:数列长度
- torch.logspace():
创建对数均分的1维张量
- start,end,steps
- base:对数函数的底,10
- torch.eye()
创建单位对角矩阵
- n:设置大小,方阵只设置一个大小
2.3 依概率分布创建张量
- torch.normal()
- mean:均值
- std:标准差
- size:设置张量多大
mean与std,可以是张量也可以是标量,这样就会出现各种概率分布。
- torch.randn():
生成标准正太分布
- size:形状
同样有randn_like
- torch.rand()
在区间【0,1)上,生成均匀分布
同有like
- torch.randint_like():
同上,只生成整数的均匀分布
- torch.randperem()
生成从0到n-1的随机排列
- n:张量长度
- torch.bernoulli()
以input为概率,生成伯努利分布
- input:概率值