创建tensor
1.从numpy中导入
a = np.array([2,3.3]) #创建一个dim为1长度为2的向量
torch.from_numpy(a)
tensor([2.0000,3.0000],dtype=torch.float64)
a = np.ones([2,3]) #创建一个dim为2的2行3列元素全为1的向量
torch.from_numpy(a)
tensor([[1.,1.,1.],
[1.,1.,1.]],dtype=torch.float64)
2.从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])
tensor([[2.0000,3.2000],
[1.0000,22.3000]])
torch.tensor() 接收现有的数据data
torch.Tensor(d1,d2,d3,...) 接收数据的维度shape;若要接收数据需放入list[ ]中(少用)
3.创建未初始化tensor
未初始化的数据也是有数据的只是非常不规则,常出现∞、-∞、0,未初始化的tensor一定要跟写入数据的后续步骤
三种创建方法:
Torch.empty() #[2,3]shape
Torch.FloatTensor(d1, d2, d3)
Torch.IntTensr(d1, d2, d3)
未初始化的tensor会出现的问题(∞、-∞、0),表现为torch.nan或torch.inf
设置默认tensor数据类型:
torch.set_default_tensor_type(torch.DoubleTensor) #将tensr默认类型设置为double
4.随机初始化
torch.rand(3,3) 接收的是shape,元素随机取自[0,1]
torch.rand_like(a) 产生与a的shape相同的tensor
torch.rand(min,max,shape) 取值[min,max)不包括max 如,torch.randint(1,10,[3,3])
torch.randn(3,3) 正态分布
torch.full([2,3],7) 全部赋值为同一个元素7
torch.arange(0,5,step) 返回([0,1,2,3,4])
torch.linspace(0,10,steps=4) 与numpy不同的是这里包含10,从0到10等分切成steps=4部分
torch.logspace(0,-1,steps=10) 从10的0次方到10的-1次方,等间距为10的次方
torch.zeros(shape)
torch.ones(shape)
torch.eye(shape) 对角线为1其余为0,不是方形填充1的位置为(0,0),(1,1),(2,2)...
torch.randperm(0,10) 随机打散从[0,10)选10个
协同shuffle作用