Pytorch中rand(),randn(),randint(),normal(),full()随机生成数据方法对比及运用

@TOC
这些方法的共同点是都可以用来创建一个张量,并且都可以指定输出张量的数据类型、形状、设备类型等参数。它们的不同之处如下:

  1. rand()方法用于生成在 [ 0 , 1 ) [0,1) [0,1) 区间内的均匀分布随机数。
  2. randn()方法用于生成标准正态分布随机数,即均值为0,方差为1的正态分布。
  3. randint()方法用于生成指定范围内的随机整数。
  4. normal()方法用于生成从均值为 mean ,标准差为 std 的正态分布中生成随机数。
  5. full()方法用于创建一个指定形状的张量,并用指定固定值填充。

因此,在实际应用中需要根据具体情况选择不同的方法,以满足数据的需要。以下为几个方法的介绍及运用。

1.rand()方法

rand()方法是生成大小在[0,1)区间的size大小的张量

torch.rand(size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

参数详解

参数意义
size要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。
out输出张量。非必要参数
dtype输出张量的数据类型
layout输出张量的布局形式
device输出张量的设备类型
requires_grad是否需要计算梯度,默认为 False

代码演示

import torch
print(torch.rand(2,3))
print(torch.rand(5))

输出

tensor([[0.7151, 0.7481, 0.6143],
        [0.3310, 0.0784, 0.4184]])
tensor([0.2428, 0.4320, 0.2535, 0.9386, 0.5276])

2.randn()方法

与rand()方法返回[0,1)区间数据不同,randn()方法是返回一个包含了从标准正态分布(均值为0,方差为1)中抽取的随机数张量。

torch.randn(size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

参数详解

参数与rand()方法一样

参数意义
size要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。
out输出张量。非必要参数
dtype输出张量的数据类型
layout输出张量的布局形式
device输出张量的设备类型
requires_grad是否需要计算梯度,默认为 False

代码演示

import torch
print(torch.randn(2,3))
print(torch.randn(5))

演示输出

tensor([[ 1.9817, -0.6548,  0.3505],
        [-0.5065, -0.7093,  0.6304]])
tensor([ 0.6409, -0.1716, -1.0290,  2.5210, -1.2670])

3.randint()方法

返回一个包含了从区间 [low, high) 的离散均匀分布中抽取的随机整数的张量

torch.randint(low=0, high, size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

参数详解

参数意义
low生成的整数下界,也就是说最小值。必要参数
high生成的整数上界,即最大值。非必要参数
size要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。
out输出张量。非必要参数
dtype输出张量的数据类型
layout输出张量的布局形式
device输出张量的设备类型
requires_grad是否需要计算梯度,默认为 False

代码示例

import torch
print(torch.randint(1,10,(2,3)))

演示结果

tensor([[2, 4, 3],
        [9, 7, 9]])

4.normal()方法

用于从均值为 mean ,标准差为 std 的正态分布中生成随机数。

torch.normal(mean, std, size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

参数详解

参数意义
mean正态分布的均值。
std正态分布的标准差。
size输出张量的形状,可以是整数或元组类型。
out输出张量。
dtype输出张量的数据类型。
layout输出张量的布局类型。
device输出张量的设备类型。
requires_grad是否需要计算梯度,默认为 False

代码演示

均值为10,标准差为1,形状为(2,3)的张量

print(torch.normal(10,1,(2,3)))

演示结果

tensor([[10.1562,  9.1040,  8.8467],
        [ 9.8670, 10.7527,  9.2519]])

5.full()方法

于创建一个指定形状的张量,并用 fill_value 填充,即指定形状固定数值的一个张量

torch.full(size, fill_value, dtype=None, layout=torch.strided, device=None, requires_grad=False

参数详解

参数意义
size要生成张量的形状,可以是整数也可以是元组。唯一必要参数,调用方法时必须给出。
fill_value要填充的数值。必要参数
dtype输出张量的数据类型
layout输出张量的布局形式
device输出张量的设备类型
requires_grad是否需要计算梯度,默认为 False

代码演示

import torch
print(torch.full((2,3),5))

演示结果

tensor([[5, 5, 5],
        [5, 5, 5]])
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorchtorch.rand()函数用于生成均匀分布的随机数,而torch.randn()函数用于生成标准正态分布的随机数。 具体来说,torch.rand()函数生成的随机数在[0, 1)范围内,形状由参数size指定。例如,torch.rand(2, 3)会生成一个形状为2x3的张量,其的元素值均匀分布在[0, 1)范围内。 而torch.randn()函数生成的随机数服从标准正态分布(均值为0,标准差为1),形状由参数size指定。例如,torch.randn(2, 3)会生成一个形状为2x3的张量,其的元素值符合标准正态分布。 另外,还有torch.randint()函数用于生成指定范围内的随机整数。函数的参数包括范围的上下界、形状等。例如,torch.randint(1, 4, (2, 3, 2))会生成一个形状为2x3x2的张量,其的元素值在1到4之间。 总结来说,torch.rand()生成均匀分布的随机数,torch.randn()生成标准正态分布的随机数,而torch.randint()生成指定范围内的随机整数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Pytorchrandrandn, random以及normal的区别](https://blog.csdn.net/weixin_44739213/article/details/108617473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [torch.rand()、torch.randn()、torch.randint()、torch.randperm()用法](https://blog.csdn.net/leilei7407/article/details/107710852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值