pytorch中创建tensor学习笔记

Tensor的创建

1.import from numpy ,即从numpy中导入

# 首先要记得导入所需要的包
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)

2.如果数据量比较小,就可以直接从List导入,不需要numpy来作为载体

# 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]])

3.生成未初始化(uninitialized)的tensor

除了上面提到过的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]])

上面提到过的是未初始化的tensor,接下来的是随机初始化的

# 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]])

4.生成数据按一定规律排列的tensor

#利用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])

5.ones,zeros,eye

#生成为全部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的学习笔记

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值