# 首先要记得导入所需要的包
import numpy
import numpy as np
import torch
# 创建数组
a=np.array([2,3.5])
torch.from_numpy(a)
Out[8]: tensor([2.0000, 3.5000], dtype=torch.float64)
# 创建矩阵
b=np.ones([2,3])
torch.from_numpy(b)
Out[11]:
tensor([[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)
# torch.tensor直接接受现有的数据,转化为tensor类型,并且只能生成dimension=1的tensor
torch.tensor([3,4,5])
Out[16]: tensor([3, 4, 5])
torch.Tensor([[2,3.4],[5,7]])
Out[35]:
tensor([[2.0000, 3.4000],
[5.0000, 7.0000]])
# torch.Tensor和torch.FloatTensor的功能相同,
# 即既可以接收现成的数据,也可以接受shape而生成相应shape的未初始化tensor
#都是float类型数据
torch.Tensor(4)
Out[25]: tensor([ 0.0000e+00, 0.0000e+00, -4.3312e-29, 4.5912e-41])
torch.Tensor([2,3.4])
Out[31]: tensor([2.0000, 3.4000])
#注意接受shape时,里面没有括号,直接输入dim1,dim2...
torch.Tensor(2,3)
Out[32]:
tensor([[4.4082e-39, 4.9592e-39, 8.4078e-45],
[0.0000e+00, 1.4013e-45, 0.0000e+00]])
除了上面提到过的torch.FloatTensor,相应的有Torch.IntTensor之外,类似的还有torch.empty()
torch.empty(2,3)
Out[36]:
tensor([[0.0000e+00, 0.0000e+00, 5.6052e-45],
[0.0000e+00, 1.4013e-45, 0.0000e+00]])
# torch.rand(),接收的是shape,生成的数据在[0,1)范围内
torch.rand(3,3)
Out[3]:
tensor([[0.9857, 0.8729, 0.2555],
[0.6778, 0.3614, 0.9560],
[0.5032, 0.4059, 0.0294]])
a=torch.rand(3,3)
torch.rand_like(a)
Out[5]:
tensor([[0.6914, 0.2570, 0.4600],
[0.3400, 0.9531, 0.7370],
[0.2925, 0.4268, 0.0341]])
#torch.randint()接受的是初始化生成tensor的范围,以及生成tensor的shape
#表示生成数据在[1,10)的范围内,不包括10,[3,4]表示tensor的shape
torch.randint(1,10,[3,4])
Out[14]:
tensor([[9, 2, 9, 1],
[7, 8, 7, 7],
[4, 9, 6, 3]])
# 用torch.randn()生成服从0,1)正态分布的随机初始化的tensor
torch.randn([3,3])
Out[13]:
tensor([[-1.4218, 3.4507, 1.5933],
[ 1.5371, 0.2951, -0.0328],
[-0.4591, 1.1520, 2.1796]])
#如果想使用自定义的均值和方差,可以使用torch.normal()
# [10]代表生成一个dim=1,有十个数据的tensor,3是均值
#(1,0,-1)表示的标准差[1,0.9,0.8.....,0.1]这样的变化
torch.normal(mean=torch.full([10],3),std=torch.arange(1,0,-0.1))
Out[16]:
tensor([3.9970, 3.6223, 2.3805, 4.1323, 3.2204, 2.4742, 3.2995, 3.1533, 2.5850,
2.9455])
#单独使用torch.full()可以生成所有数据都相同的tensor,默认是float型
torch.full([3,4],5)
Out[17]:
tensor([[5., 5., 5., 5.],
[5., 5., 5., 5.],
[5., 5., 5., 5.]])
torch.full([3,4],5.6)
Out[18]:
tensor([[5.6000, 5.6000, 5.6000, 5.6000],
[5.6000, 5.6000, 5.6000, 5.6000],
[5.6000, 5.6000, 5.6000, 5.6000]])
#利用arange或者arange
# 默认等差是1,可设置等差的大小
torch.arange(0,10)
Out[20]: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
torch.arange(0,10,2)
Out[19]: tensor([0, 2, 4, 6, 8])
#利用linspaceh或者logspace
torch.linspace(0,9,steps=5)
Out[22]: tensor([0.0000, 2.2500, 4.5000, 6.7500, 9.0000])
torch.linspace(0,10,steps=4)
Out[23]: tensor([ 0.0000, 3.3333, 6.6667, 10.0000])
#生成为全部1的tensor
torch.ones([3,4])
Out[24]:
tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
#生成全部为0的tensor
torch.zeros([3,4])
Out[25]:
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
#生成单位矩阵
torch.eye(4)
Out[26]:
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
torch.eye(3,3)
Out[29]:
tensor([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
torch.eye(3,4)
Out[28]:
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.]])
这是今天仅仅关于创建tensor的学习笔记