Pytorch入门(中)

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

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

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

 

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

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

(4)随机数生成张量

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

 

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

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

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

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

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

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

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

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

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

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

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

输出结果和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的空张量

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mez_Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值