Pytorch实用教程:随机数相关函数:、、用法介绍

时间:2024-11-17 22:30:51

文章目录

    • 整体介绍
    • ()
    • ()
    • ()
      • 函数格式
      • 参数说明
      • 函数作用
      • 应用示例

整体介绍

PyTorch中,与随机数相关的函数主要有以下几个:

  1. ()

    • 功能:生成具有均匀分布的随机数,这些随机数的范围在[0, 1)之间。
    • 示例:(3, 4) 会生成一个形状为(3, 4)的张量,元素值在[0, 1)之间。
  2. ()

    • 功能:生成具有标准正态分布(均值为0,标准差为1)的随机数。
    • 示例:(2, 3) 将创建一个形状为(2, 3)的张量,其中的元素是遵循标准正态分布的随机数。
  3. ()

    • 功能:生成指定范围内的随机整数。
    • 示例:(low=0, high=10, size=(3,4)) 会生成一个形状为(3, 4)的张量,元素值是在[0, 10)范围内的随机整数。

这些函数都接受形状参数(size*sizes),用于指定生成的随机张量的形状。此外,它们还可以接受其他可选参数,如数据类型dtype)、设备(device)等,以便更精确地控制生成的随机张量的属性。

请注意,除了上述函数外,PyTorch还提供了其他与随机数相关的函数和工具,但这些是最常用和基本的随机数生成函数。

()

是 PyTorch 中的一个函数,用于生成具有均匀分布的随机数。这个函数非常有用,尤其是在需要随机初始化数据、添加噪声或进行随机数据增强时。

函数的基本使用方法如下:

torch.rand(*sizes, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
  • 1

参数解释:

  • *sizes:定义输出张量的形状。例如,(3, 4) 将生成一个 3x4 的张量。
  • out (可选):如果提供,则输出的结果将保存在这个张量中。这样做可以避免反复创建新的张量,从而提高内存使用效率。
  • dtype (可选):指定返回张量的数据类型,如 torch.float32torch.float64 等。如果未指定,则默认为 torch.float32
  • layout (可选):指定返回张量的内存布局。在大多数情况下,你可以忽略这个参数,除非你需要特定的内存布局。
  • device (可选):指定张量应该在哪个设备上(如 CPU 或 GPU)。
  • requires_grad (可选):指定是否需要计算梯度,默认为 False。这在进行神经网络训练时很重要,但在仅生成随机数时通常可以忽略。

示例:

import torch

# 生成一个形状为 (3, 4) 的随机数张量
tensor = torch.rand(3, 4)
print(tensor)
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

tensor([[0.6721, 0.4290, 0.2070, 0.8656],
        [0.8860, 0.5206, 0.5772, 0.3537],
        [0.7590, 0.2869, 0.9794, 0.5584]])
  • 1
  • 2
  • 3

这段代码将输出一个 3x4 的张量,其中的元素是从 0 到 1 的均匀分布中随机抽取的。

()

() 是 PyTorch 中的一个函数,用于生成具有标准正态分布(均值为0,标准差为1)的随机数张量。这个函数在深度学习和数据科学中非常有用,尤其是在需要随机初始化模型参数、生成随机数据或添加正态分布的噪声时。

函数的基本使用方法如下:

torch.randn(*sizes, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
  • 1

参数解释:

  • *sizes:这是一个可变参数,用于指定生成张量的形状。例如,(3, 4) 会生成一个 3x4 的张量。
  • out (可选):如果提供,输出的结果将保存在这个张量中。这可以避免反复创建新的张量,有助于节省内存。
  • dtype (可选):指定返回张量的数据类型,比如 torch.float32torch.float64。如果未指定,默认为 torch.float32
  • layout (可选):指定返回张量的内存布局。在大多数情况下,可以使用默认值
  • device (可选):指定张量应该在哪个设备上创建,比如 CPU 或 GPU。
  • requires_grad (可选):指定是否需要计算梯度,默认为 False。在进行神经网络训练时这个参数很重要,但如果只是生成随机数,通常可以忽略。

示例:

import torch

# 生成一个形状为 (2, 3) 的标准正态分布随机数张量
tensor = torch.randn(2, 3)
print(tensor)
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

tensor([[ 0.5755, -0.2951,  1.4055],
        [ 1.2965,  2.2931,  1.5677]])
  • 1
  • 2

这段代码将输出一个 2x3 的张量,其中的元素是从标准正态分布中随机抽取的。这意味着每个元素的均值接近0,标准差接近1(但由于是随机抽样,实际值可能会有所偏差)。

() 是深度学习中常用的函数之一,特别是在初始化模型权重和偏置时,因为正态分布有助于模型在训练开始时保持稳定性。

()

() 是 PyTorch 中的一个函数,用于生成在指定范围内的随机整数张量。以下是对 () 函数的详细介绍:

函数格式

torch.randint(low=0, high, size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
  • 1

参数说明

  1. low (int, optional): 随机整数生成的最小值(包含),默认为0。
  2. high (int): 随机整数生成的最大值(不包含)。
  3. size (tuple): 定义输出张量形状的元组。
  4. generator (, optional): 用于采样的伪随机数生成器。
  5. out (Tensor, optional): 输出张量。
  6. dtype (, optional): 如果未指定,则返回一个带有 torch.int64 数据类型的张量。
  7. layout (, optional): 返回张量的所需布局。默认为
  8. device (, optional): 返回张量的所需设备。如果为 None,则使用当前设备作为默认张量类型。
  9. requires_grad (bool, optional): 如果 autograd 应该在返回的张量上记录操作。默认为 False

函数作用

  • 返回一个填充了随机整数的张量,这些整数在 low(包含)和 high(不包含)之间均匀生成。
  • 张量的形状由变量参数 size 定义。

应用示例

import torch

# 生成一个形状为 (2, 20) 的张量,其中的元素是在 0(包含)到 100(不包含)之间的随机整数
tensor=torch.randint(0, 100, (2, 20))
print(tensor)
  • 1
  • 2
  • 3
  • 4
  • 5

结果:

tensor([[50, 78, 43, 10, 57,  1, 20,  3, 76, 18, 63, 65, 69, 33, 58, 98, 37, 74,
         74, 70],
        [16,  5, 20, 25, 88, 41, 47, 91, 45, 42, 70, 76,  1, 33, 93, 82, 34, 40,
         64, 75]])
  • 1
  • 2
  • 3
  • 4

在这个例子中,() 生成了一个形状为 (2, 20) 的张量,张量中的每个元素都是一个在 [0, 100) 范围内的随机整数。这个函数在需要随机索引、随机抽样或者初始化整数参数等场景中非常有用。