0
点赞
收藏
分享

微信扫一扫

Pytorch入门(中)


(3)张量和NumPy数据相互转换

Pytorch提供了Numpy数组合Pytorch张量相互转换的函数,非常方便对张量进行相关操作,如将张量转化为Numpy数组,在通过Numpy数组进行相关计算后,可以再次转化为张量,一遍进行张量相关的计算。

将Numpy数组转化为Pytorch张量,可以使用torch.as_tensor()函数和torch.from_numpy()函数,例如:

Pytorch入门(中)_python

Pytorch入门(中)_python_02

 

从上面的代码中得到的张量是64位浮点型数据,这是因为使用numpy生成的数组默认就是64位浮点型数组。 这是因为使用Numpy生成的数组默认就是64位浮点型数组。

针对Pytorch中的张量,使用torch.numpy()函数即可转化为Numpy数组。

Pytorch入门(中)_python_03

(4)随机数生成张量

在pytorch中还可以通过相关随机数来生成张量,并且可以指定生成随机数的分布函数等。在生成随机数之前,可以使用torch.manual_seed()函数,指定生成随机数的种子,用于保证生成的随机数是可重复出现的。如使用torch.normal()生成服从正态(0,1)分布的随机数:

Pytorch入门(中)_深度学习_04

 

在torch.normal()函数中 ,通过mean参数指定随机数的均值,std参数指定随机数的标准差,如果mean参数和std参数都只会有一个元素这会生成一个随机数;如果mean参数和std参数有多个值,这可以生成多个随机数,例如:

Pytorch入门(中)_入门_05

上面的例子中,每个随机数服从的分布均值都是0,但是他们分布的标准差则分别是1,2,3,4.当然也可以分别制定每个随机数服从的均值, 例如:

Pytorch入门(中)_python_06

 上面的例子中,每个随机数服从的分布均值分别是1,2,3,4,分布的标准差也分别为1,2,3,4.

也可以使用torch.rand()函数,在区间[0,1]上生成服从均匀分布的张量:

Pytorch入门(中)_深度学习_07

 而torch.rand_like函数,这可根据其他张量维度,生成预期维度相同的随机数张量,例如:

Pytorch入门(中)_python_08

使用torch.randn()和torch.randn_like()函数则可生成服从标准正态分布的随机数张量,例如:

Pytorch入门(中)_深度学习_09

 使用torch.randperm(n)函数,这可将0~n(包含0不包含n)之间的整数进行随机排序后输出,例如:将0~9这10个数字重新随机排序后输出,可使用如下程序:

Pytorch入门(中)_pytorch_10

 (5)其它生成张量的函数

在pytorch中包含和np.arrange()用法相似的函数torch.arange(),常常用来生成张量,例如:

Pytorch入门(中)_pytorch_11

 在torch.arange()中,参数start指定开始,参数end指定结束,参数step这指定步长。可食用torch.linepace()函数在范围内生成固定数量的等间隔张量,例如:

Pytorch入门(中)_pytorch_12

 torch.logspace()函数则可生成以对数为间隔的张量,例如:

Pytorch入门(中)_python_13

输出结果和10**(torch.linespace(start=0.1,end=1,steps=5))等价。同时pytorch中还包含很多预定义的函数,用于生成特定的张量。如下所示

函数

描述

torch.zeros(3,3)

3*3的全零张量

torch.ones(3,3)

3*3的全1张量

torch.eye(3)

3*3的单位向量

torch.full((3,3),fill_value=0.25)

3*3使用0.25填充的张量

torch.empty(3,3)

3*3的空张量

 

Pytorch入门(中)_机器学习_14

 

Pytorch入门(中)_入门_15

 

 

举报

相关推荐

0 条评论