Pytorch课程笔记(二)----创建Tensor
从numpy中导入
import torch
import numpy as np
a1 = np.array([2, 2.3])
a2 = np.ones([2, 3])
b1 = torch.from_numpy(a1)
b2 = torch.from_numpy(a2)
print(b1)
print(b2)
print(a1)
print(a2)
结果:
从numpy中导入的float其实是double类型
从list中导入
import torch
a1 = torch.tensor([2, 2.3])
a2 = torch.FloatTensor([2, 3])
b1 = torch.tensor([[2., 2.3],[1., 22.3]])
print(a1)
print(a2)
print(b1)
结果:
注意这里的tensor和FloatTensor是由区别的
tensor代表接收现有的张量数据
FloatTensor(shape)代表的是接收现有数据的维度
生成未初始化的数据
- Torch.empty()
- Torch.FlaotTensor(d1,d2,d3)
torch.FloatTensor([1,2]) ≠ torch.tensor([1,2]) - Torch.IntTensor(d1,d2,d3)
一般在用的时候都是先进行初始化,再赋值数据
随机初始化函数
rand/rand_like/randint
import torch
a1 = torch.rand(2,2)
a2 = torch.rand_like(a1)
a3 = torch.randint(1, 10,[3,3])
print(a1)
print(a2)
print(a3)
结果:
这里randn比较好用
但是不做过多说明了
生成特定元素张量
- full
a1 = torch.full([2, 3], 6)
a2 = torch.full([], 6)
a3 = torch.full([1], 6)
print(a1)
print(a2)
print(a3)
结果:
递增/递减的张量生成
- arange/range
a = torch.arange(0,10,2)
结果:
等份切分
- linspace/logspace
a1 = torch.linspace(0, 10, steps=4)
a2 = torch.logspace(0, 1, steps=10)
a3 = torch.logspace(0, -1, steps=10)
结果:
logspace的base参数可以设置为2,10,e等底数
生成最简单的张量
- ones/zeros/eye
a1 = torch.ones(3,3)
a2 = torch.zeros(3,3)
a3 = torch.eye(3,4)
结果:
随机打散
- randperm
a1 = torch.randperm(10)
结果:
- random.shuffle
随机打散用于索引