PyTorch笔记02----创建Tensor
PyTorch各种创建Tensor方式
import from numpy
a = np.array([2, 3.3]) |
import from list
torch承载的参数是现成的数据:numpy或者list Torch、FloatTensor接收shape作为参数,生成一个没有初始化的类型. 或使用list来接收现有数据(不建议).
torch.tensor([2, 3.2]) #tensor([2.0000, 3.2000])
torch.FloatTensor([2., 3.2]) #tensor([2.0000, 3.2000])
torch.tensor([[2., 3.2],[1., 22.3]])
uninitialized
- torch.empty(d1, d2)
- torch.FloatTensor(d1, d2, d3)
- torch.IntTensor(d1, d2, d3)
要把未初始化的数据覆盖掉,如果出现torch.nan或者torch.inf,可能就是使用了未初始化的数据.
set default type
一般使用Tensor默认是FloatTensor
使用torch.set_default_tensor_type(torch.DoubleTensor)
来改变默认类型
torch.tensor([1.2, 3]).type #'torch.FloatTensor' |
rand/rand_like, randint
rand 随机使用[0, 1]均匀分布
torch.rand(3, 3) #按均匀分布生成3*3shape的随机张量
rand_like 接受的参数是一个tensor,生成一个和其shape相同的随机张量 > *_like
randint(min, max, [shape]),左闭右开
randint(1, 10, [3, 3])
randn 标准正态分布
torch.randn(3, 3) #按标准正态分布生成3*3shape的随机张量 |
如果想自定义均值和方差,使用normal生成一维张量后reshape
torch.normal(mean = torch.full([10], 0), std = torch.arange(1, 0, -0.1))
#torch.full([10], 0)生成一个10*1的全0张量
#均值为0,方差依次递减[1, 0.9, ...]
full
torch.full([2, 3], 7) #tensor([[7., 7., 7.], |
arange / range
torch.arange(0, 4) #tensor([0, 1, 2, 3]) |
linspace / logspace
torch.linspace(0, 10, steps = 4) #第三个参数是数量 |
Ones / Zeros / Eye
torch.ones(2, 2) |
torch.eye(3) |
eye最多两个参数
randperm
torch.randperm(10) |
- random.shuffle > 为了保持配对
a = torch.rand(2, 3)
b = torch.rand(2, 2)
idx = torch.randperm(2)
idx #tensor([1, 0])
a[idx]
b[idx]