torch.autograd.Variable
Variable是torch.autograd中的数据类型,主要用于封装Tensor,进行自动求导
data: 被包装的Tensor
grad: data的梯度
grad_fn: 创建Tensor的Function,是自动求导的关键
requires_grad: 指示是否需要梯度
is_leaf: 指示是否是叶子节点
torch.Tensor
从Pytorch0.4.0开始,Variable并入Tensor
dtype: 张量的数据类型,如torch.FloatTensor或torch.cuda.FloatTensor
shape: 张量的形状
device: 张量所在设备,GPU、CPU
data: 被包装的Tensor
grad: data的梯度
grad_fn: 创建Tensor的Function,是自动求导的关键
requires_grad: 指示是否需要梯度
is_leaf: 指示是否是叶子节点
Tensor的创建方法:
- 直接创建
torch.tensor(
data,
dtype=None,
device=None,
requires_grad=False,
pin_memory=False
)
功能: 从data创建tensor
data:数据,可以是list,numpy
dtype: 数据类型,默认与data的一致
device:所在设备,cuda/cpu
requires_grad:是否需要梯度
pin_memory: 是否存在于锁页内存,会更快
也可以使用torch.from_numpy(ndarray)
2. 依据数值创建
torch.zeros(
*size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False
)
功能:依size创建全0张量
size:张量的形状,如(3,3)、(3,244,244)
out:输出的张量
layout:内存中布局形式,有strided(顺序存储,大多用于稠密张量),sparse_coo(离散存储,大多用于稀疏张量)
device: 所在设备,gpu、cpu
requires_grad:是否需要梯度
torch.zeros_like(input,
dtype=None,
layout=None,
device=None,
requires_grad=False)
功能:依input形状创建全0张量
torch.arange(start=0,
end,
step=1,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
功能:创建等差的一维张量
注意事项:数值区间为[start, end)
start:数列起始值
end:数列“结束值”
step:数列公差,默认为1
torch.linspace(
start,
end,
steps=100,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
功能:创建均分的1维向量
注意事项:数值区间为[start, end]
start:数列起始值
end:数列结束值
steps:数列长度
torch.logspace(start,
end,
steps=100,
base=10.0,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
功能: 创建对数均分的1维张量
注意事项:长度为steps,底为base
start: 数列起始值
end: 数列结束值
steps: 数列长度
base:对数函数的底,默认为10
- 依概率分布创建张量
torch.normal(mean,
std,
out=None)
功能:生成正态分布(高斯分布)
mean:均值
std: 标准差
torch.randn(*size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
torch.randn_like()
功能:生成标准正态分布
torch.rand(*size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
torch.randint(
low=0,
high,
size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False
)
torch.rand()
torch.rand_like()
功能:在区间[0,1)上,生成均匀分布
torch.randint()
torch.randint_like()
功能:在区间[low,high)生成整数均匀分布
size:张量的形状