目录
张量的生成方式
随机张量生成
常数张量生成
查看与调整张量元素的类型
张量大小的查看
自定义张量元素
今天的学习还是要借助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