1.(以前)Variable是torch.autograd中的数据类型,主要用于封装Tensor,进行自动求导:
data:被包装的tensor
grad:data的梯度
grad_fn:创建Tensor的Function,是自动求导的关键
requires_grad:指示是否需要梯度
is_leaf:指示是否是叶子节点(张量)
2.(现在)Variable并入Tensor
dtype:张量的数据类型,如torch.FloatTensor,torch.cuda.FoatTensor
shape:张量的形状,如(64,3,224,224)
device:张量所在设备,GPU/CPU,加速的关键
3. 张量创建:
1)直接创建
torch.tensor(
data, dtype=None, device=None,
requires_grad=False, pin_menory=False)
pin_menory:存于索页内存
2)torch.from_numpy(ndarray) # 从numpy创建tensor,内存共享
3)依据数组创建
torch.zeros((3,3),out=out_t)
torch.zeros_like()
torch.one()
torch.one_like()
torch.full((3,3), 10)
torch.full_like()
torch.arange(start,end,step)#等差 【start,end)
torch.linspace(start,end,steps)
4)依据概率分布创建
torch.normal(mean,std,out=None)#正态高斯分布,有四种情况(标量/张量)
torch.randn(*size,out=None,dtype=None)标准正态分布
*size:张量形状
torch.randn_like()
torch.rand(*size,out=None,dtype=None) # [0,1)上均匀分布
torch.rand_like()
torch.randint() # [low,high)
torch.randint_like()
torch.randperm(n,out=None,dtype=torch.int64)# 0—n-1随机排列
n:张量的长度
torch.bernoulli(input,*,generator=None,out=None) #以input概率值,生成伯努利分布