PyTorch学习笔记(3):张量(Tensor)的生成

目录

张量的生成方式

随机张量生成

常数张量生成

查看与调整张量元素的类型

张量大小的查看

自定义张量元素


今天的学习还是要借助Anaconda完成。首先,我们输入

(base) C:\Users\imzucn>python
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch

张量的生成方式

进入torch中,需要了解一下常见的张量生成方式。

主要由以下几类

随机张量生成

随机张量的生成代码是 torch.rand()。例如,我们要生成两行两列的随机变量,结果就是

x = torch.rand(2, 2)
print(x)

此时,随机生成的结果就是,即二维矩阵(张量)。

tensor([[0.0307, 0.2306],
        [0.1607, 0.4621]])

常数张量生成

在有些情况下,要生成零张量或单位张量。

零张量的用法是torch.zeros(),输入和输出代码如下所示:

>>> x = torch.zeros(2, 2)
>>> print(x)
tensor([[0., 0.],
        [0., 0.]])

单位张量的用法是torch.ones(),输入和输出代码如下所示:

>>> x = torch.ones(2, 2)
>>> print(x)
tensor([[1., 1.],
        [1., 1.]])

查看与调整张量元素的类型

其中,所有的数据默认都要加一个小数点,意味着这应该是浮点数而不是整型。如何来验证这个是浮点数呢?就要用到这个命令:

print(x.dtype) #注意,这里是点(.)且中间不能有空格

来试试看

>>> print(x.dtype)
torch.float32

其中,dtype是data type,也就是数据类型的缩写。可见输出的结果:果然是浮点数。

但是,有些情况下,我们不希望张量中元素的类型只有float32,我们也想希望用double、int、甚至float64、float16来表示,怎么办呢?

这就需要在原有代码中加入一行

dtype=(torch.***) #***代表你要的数据类型,如int,double,float16等

分别用上述类型做了一个测试:

此外,除了上述的做法,还有一个简单的做法,是在张量定义时就增加一个说明。此时的语法是在维数的后面增加一个dtype = torch.数据类型

x = torch.ones(2, 2, dtype = torch.double)

我们来针对上述代码进行一个测试,结果是

tensor([[1., 1.],
        [1., 1.]], dtype=torch.float64)

对于整型、实型等情况,是不是也适用呢?我们来试一下:

 x = torch.rand(2, 3, dtype = torch.int)

输出结果为:

Traceback (most recent call last):
  File "", line 1, in 
RuntimeError: "check_uniform_bounds" not implemented for 'Int'

这就表示说,整型对于随机张量是不适用的。

那么,对于一个固定的张量情况是否一致?我们选用单位张量来分析:

x = torch.ones(2, 3, dtype = torch.int)

输出结果为

tensor([[1, 1, 1],
        [1, 1, 1]], dtype=torch.int32)

可见,整型的输出是32位的。这说明,对于常量是正常的。

张量大小的查看

有时,我们想查看一下这个张量的大小,所用到的代码是size。

比如,查看张量x的大小,最简单的实例是:

x = torch.ones(2, 2, dtype = torch.float16)
print(x.size())

输出结果为

torch.Size([2, 2])

证明它是一个两行两列的2维张量。

自定义张量元素

在上述内容中,学习到了如何生成0张量、单位张量和随机张量。但是对于某些情况,我们需要指定张量的元素,此时,我们就需要这么做:

x = torch.tensor([1.0, 2.0])
print(x)

其中,张量的元素就是x = torch.tensor([张量元素])

输出上述结果为:

tensor([1., 2.])

好的,今天张量的生成部分就到此结束了。欢迎大家在下方给我留言。方式如下:

1、CSDN博客

2、个人博客:www.im-zu.cn

你可能感兴趣的:(Pytorch学习笔记,pytorch,深度学习,神经网络)