Pytorch深度学习入门--1.Tensor基础

一、Tensor

Tensor,中文叫做张量,它是Pytorch中最基本的数据类型,同时也是最重要的数据类型

二、数学含义

在数学中,标量是只有大小没有方向的量。例如,1,2,3等。向量是既有大小又有方向的量。例如, 𝑣=(1,2,3) 。矩阵是由多个向量组成的一堆数字。例如, 𝐴=[123456789] .

向量其实也可以看成矩阵,可以把它看成1*x列的矩阵,或者x*1列的矩阵。

那么,张量其实是标量、向量和矩阵的统称。也就是说,标量、向量和矩阵都是张量的特例:

标量是零维张量、向量是一维张量、矩阵是二维张量。当然还有3维张量,4维张量,等等。

其中,矩阵是三维张量下的一个二维切面。具体如下图所示。

三、Tensor的基本创建方法

使用方法说明
torch.Tensor()创建一个4*4的矩阵
torch.Tensor(list)使用Python中的列表创建Tensor
torch.zeros()创建元素全为0的Tensor
torch.eye()创建对角线位置元素全为1、其它位置全为0
torch.ones()创建元素全为1
torch.rand()创建元素初始化在[0,1)区间的随机数
torch.arange()创建一个在区间内按指定步长递增的一维(前两个区间,第三为步长)
torch.eye() 对角线位置元素全为1
torch.from_numpy()将Numpy的ndarray对象转换为Tensor
torch.linspace() 创建一个区间内被均匀划分的一维Tensor
torch.randn()创建服从标准正态分布的一组随机数Tensor

1.torch.Tensor()函数创建

在Pytorch中穿件Tensor,需要导入torch包,首先在pycharm中导入torch包

import torch

然后使用最基本的方法torch.Tensor()方法创建Tensor。这里我们创建一个4*4的矩阵,也就是二维张量。

import torch
x = torch.Tensor(4,4)
print(x)

输出: 

tensor([[3.4175e+02, 8.9123e-43, 3.4174e+02, 8.9123e-43],
        [3.4170e+02, 8.9123e-43, 3.4170e+02, 8.9123e-43],
        [3.4175e+02, 8.9123e-43, 3.4175e+02, 8.9123e-43],
        [3.4172e+02, 8.9123e-43, 3.4172e+02, 8.9123e-43]]) 

可以看到,我们虽然没有对矩阵x进行初始化,但是它已经有了值,下面我们看一下,它的这个值是什么类型的。 

print(x.type())

输出: 

'torch.FloatTensor'

 

print(x.dtype())

输出: 

torch.float32  

 

x.type()返回的变量类型可以看出,torch.Tensor()默认类型是torch.FloatTensor,而该类型的dtype为32为的浮点数。下图是pytorch的8种数据类型

下面使用torch.DoubleTensor()函数创建一个1*2*5的64位浮点数的Tensor

x = torch.DoubleTensor(1,2,5)
print(x)

输出: 

tensor([[[1.9582e-306, 2.2252e-306, 8.4561e-307, 1.4242e-306, 1.1126e-306],
         [1.1126e-306, 1.4241e-306, 7.5660e-307, 6.2306e-307, 8.4561e-307]]],
       dtype=torch.float64) 

2.torch.Tensor()使用List创建

在这里我们使用Python中的列表创建Tensor。

list = [[1,2,3],[4,5,6],[7,8,9]]
torch.Tensor(list)

输出: 

tensor([[1., 2., 3.],
        [4., 5., 6.],
        [7., 8., 9.]]) 

3.快速创建法

3.1   torch.zeros()函数:全为0

用于创建元素全为0的Tensor.示例如下:

>>> torch.zeros(3,4)
tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

3.2   torch.eye()函数:对角线全为1、其它全为0

用于创建对角线位置元素全为1、其它位置全为0的Tensor.示例如下:

>>> torch.eye(4,4)
tensor([[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]])

3.3   torch.ones()函数:全为1

用于创建元素全为1的Tensor.示例如下:

>>> torch.ones(4,4)
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])

3.4   torch.rand()函数[0,1)区间的随机数

用于创建元素初始化在[0,1)区间的随机数的Tensor.示例如下:

>>> torch.rand(4,4)
tensor([[0.6398, 0.1484, 0.5834, 0.5358],
        [0.1273, 0.9559, 0.8656, 0.4693],
        [0.6571, 0.2421, 0.8601, 0.0044],
        [0.7654, 0.8349, 0.8755, 0.5225]])

3.5   torch.arange()函数在区间内按指定步长递增的一维

用于创建一个在区间内按指定步长递增的一维的Tensor.前两个参数指定区间范围,第三个参数指定步长。示例如下:

>>> torch.arange(1,4,0.5)
tensor([1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000])

还有一些其它函数的创建方法,如下面所示:

3.6   torch.eye() 对角线位置元素全为1

3.7   torch.from_numpy() 将Numpy的ndarray对象转换为Tensor;

3.8   torch.linspace() 创建一个区间内被均匀划分的一维Tensor;

3.9   torch.randn创建服从标准正态分布的一组随机数Tenso。

 

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪猪爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值