pytorch flatten函数_1. PyTorch中的基本数据类型——张量

在PyTorch中,张量属于一种基本的数据类型,和Numpy库中的ndarry类似,无论是标量、向量、矩阵还是高维数组都是以张量(Tensor)这种数据类型来表示。因此,有必要对该基本数据类型有所了解。(在PyTorch 0.4版本以前,还有个Variable类,主要是用于计算梯度,在后续版本中已经和Tensor合并,本专栏主要以最新的1.7.0版本做实验)

目录

  • 1. 张量的数据类型
  • 2. 张量的创建
    • (1) 使用torch.tensor()函数创建张量或者使用torch.Tensor()创建张量
    • (2) 使用torch.xx_like()创建张量
    • (3) 随机数生成张量
    • (4) 按照数值内容创建张量
    • (5) 按照某种规则生成张量
    • (6) 与Numpy数据相互转化
  • 3. 张量的基本操作
    • (1)改变张量的形状
    • (2) 获取张量元素
    • (3) 张量的拼接与拆分
  • 4.张量的计算
    • (1) 张量的逐元素操作
    • (2) 张量的矩阵操作
    • (3) 张量的矩阵操作
    • (3) 张量的统计量计算
  • Reference

1. 张量的数据类型

在PyTorch中,张量也就是Tensor,分别有两大类型:浮点型和整型。其中浮点型按照精度不同,又分为16位、32位以及64位;整型则根据有无符号位以及精度,又分为8位无符号整型、8位有符号整型、16位有符号整型、32位有符号整型以及64位有符号整型。每个类型又可以区分为CPU类型以及GPU类型。具体如下图所示:

pytorch flatten函数_1. PyTorch中的基本数据类型——张量_第1张图片

一般常用的就是32位浮点型,而且只有浮点型才可以计算梯度。训练用的标签则一般是整型中的32或64位。 我们可以使用tensor.dtype来查看当前tensor的数据类型。

2. 张量的创建

(1) 使用torch.tensor()函数创建张量或者使用torch.Tensor()创建张量

例如:

In [2]: torch.tensor([1.0, 2.0]).type()
Out[2]: 'torch.FloatTensor'
In [3]: torch.Tensor([1.0, 2.0]).type()
Out[3]: 'torch.FloatTensor'

两者都可以通过传入一个类array的data进行tensor的创建。那两者有什么区别呢?

torch.tensor()是一个函数,而 torch.Tensor()是一个类,是默认tensor 类型的一个别名,它实际上是调用的 __init__函数去构建的张量。

因此,torch.tensor()可以通过dtype参数指定生成的tensor的类型并且通过requires_grad参数去指定是否计算梯度,而torch.Tensor()都不可以,还有就是torch.Tensor()可以通过传入形状来创建张量。具体见下图示例:

你可能感兴趣的:(pytorch,flatten函数)