ctrl+问号所在键为多行注释
一、张量是一个多维数组,它是标量、向量、矩阵的高维拓展。
二、张量的创建
(1)直接创建
torch.tensor()
直接从数据创建张量。
torch.form_numpy(ndarray)
从numpy创建
(2)依据数值创建
torch.zeros()
可创建全0张量。
torch.zeros_like()
依input形状创建全零张量。与之对应有torch.ones()
和torch.ones_like()
torch.full()
,创建大小为size的张量并数值均为fill_value
torch.arange()
创建等差的1维张量。数值区间为[start,end)
torch.linspace()
创建均分的1维张量,数值区间为[start,end)
torch.logspace()
创建对数均分的1维张量,和torch.linspace
一样,多一个参数base为对数函数的底
torch.eye()
创建单位对角矩阵(2维张量),注意其默认为张量。
(3)依概率分布创建张量
torch.normal()
其有4种模式:mean和std分别为标量或张量的组合
torch.randn()
和torch.randn_like()
可生成标准正态分布
torch.randperm()
生成从0到n-1的随机排列
torch.bernoulli()
以input为概率,生成伯努利分布(0-1分布,两点分布)
# 1. 直接创建
torch.tensor(data,dtype=None,device=None,requires_grad=False,pin_memory=False)
torch.form_numpy(ndarray) #注意:其创建的tensor与原adarray共享内存,改变其中一个数据,另一个也改变。
#依据数值创建
torch.zeros(*size,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
torch.zero_like(input,dtype=None,layout=None,device=None,requires_grad=False)
torch.full(size,fill_value,out=None,layout=torch.strided,device=None,requires_grad=False)
torch.arange(start=0,end,step=q,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
torch.linspace(start,end,steps=100,dtype=None,layout=torch.strided,device=None,requires_grad=False)#其中step是数列长度而不是步长
torch.logspace(start,end,steps=100,base=10.0dtype=None,layout=torch.strided,device=None,requires_grad=False)
torch.eye(n,m=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)#其中n为矩阵行数,m为矩阵列数。
#依据概率创建
torch.randn(*size,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
torch.normal(mean,std,out=None)
torch.normal(mean,std,size,out=None)
torch.randperm(n,out=None,dtype=torch.int64,layout=torch.strided,device=None,requires_grad=False) #n为张量长度
torch.bernoulli(input,*,generator=None,out=None) #input为概率值