目录
一、张量基本概念
张量是一个多维数组,是标量、向量、矩阵的高维拓展
Tensor(张量)类似于NumPy的ndarray,但还可以在GPU上使用来加速计算。
二、Tensor
2.1 Variable
Variable是torch.autograd中的数据类型,主要用于Tensor封装,进行自动求导。
Variable的5个属性:
1. data:被包装的Tensor
2. grad:data的梯度
3. grad_fn:创建Tensor的Function,是自动求导的关键
4. requires:指示是否需要梯度
5. is_leaf:指示是否是叶子
2.2.Tensor
Pytorch0.4.0及以后版本已将Variable并入Tensor
当前Tensor具有8个属性,除了并入的Variable 5个属性之外,另外3个是:
dtype:张量的数据类型
shape:张量的形状
device:张量所在设备,cup/gpu,是加速的关键
三、张量的创建
3.1 直接创建
torch.tensor(data) #data可以是list、numpy
arr = np.ones((3, 3))
print("arr数据类型:", arr.dtype)
# t = torch.tensor(arr, device='cuda')
t = torch.tensor(arr)
print(t)
torch.from_numpy(arr) #从numpy创建tensor,这种方法创建的tensor与原ndarray共享内存。
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("arr数据类型:", arr.dtype)
# t = torch.tensor(arr, device='cuda')
t = torch.from_numpy(arr)
print(t)
3.2 依据数值创建
torch.zeros(size,out) #size是张量形状,如(3,3);out是输出的张量
out_t = torch.tensor([1])
t = torch.zeros((3, 3), out=out_t) #out用来接收全0张量, 类似赋值操作
print(t, '\n', out_t)
print(id(t), id(out_t), id(t) == id(out_t))
torch.zeros_like(input)
torch.ones(size)
torch.full(size, value) #创建全为value的张量
torch.arange(start,end,step)