Sobol引擎

torch.quasirandom.SobolEngine(dimension, scramble=False, seed=None)[源代码]

The torch.quasirandom.SobolEngine 是用于生成(打乱的)Sobol序列的引擎。Sobol序列是一种低差异准随机序列。

此 Sobol 序列引擎的实现能够采样最大维度为 21201 的序列。它使用从 https://web.maths.unsw.edu.au/~fkuo/sobol/ 获取的方向数字,这些方向数字是通过在维度 21201 内使用搜索标准 D(6) 获得的。这是作者推荐的选择。

参考资料

  • Art B. Owen. Scrambling Sobol和Niederreiter-Xing点。复杂性杂志,14(4):466-489,1998年12月。

  • I. M. Sobol. 立方体内点的分布及积分的精确计算. Zh. Vychisl. Mat. i Mat. Phys., 7:784-802, 1967.

参数
  • dimension (Int) – 序列的维度

  • scramble (bool, optional) – 设置为True将生成打乱的 Sobol 序列,这有助于产生更好的序列。默认值:False

  • seed (Int, optional) – 用于扰乱的种子。如果指定了种子值,随机数生成器将使用该种子;否则,它会使用一个随机种子。默认值:None

示例:

>>> soboleng = torch.quasirandom.SobolEngine(dimension=5)
>>> soboleng.draw(3)
tensor([[0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
        [0.5000, 0.5000, 0.5000, 0.5000, 0.5000],
        [0.7500, 0.2500, 0.2500, 0.2500, 0.7500]])
draw(n=1, out=None, dtype=None)[源代码]

用于从Sobol序列中绘制包含n个点的序列的函数。需要注意的是,每个样本都依赖于之前的样本。结果的大小为$(n, dimension)$

参数
  • n (Int, 可选) – 要绘制的点序列的长度。默认值为 1。

  • out (Tensor, 可选) – 指定输出张量

  • dtype (torch.dtype, 可选) - 返回的张量的数据类型。默认为 None

返回类型

Tensor

draw_base2(m, out=None, dtype=None)[源代码]

用于从Sobol序列中绘制2**m个点的函数。请注意,每个样本都依赖于之前的样本。结果的大小为$(2**m, dimension)$

参数
  • m (Int) – 绘制点数的以2为底的指数。

  • out (Tensor, 可选) – 指定输出张量

  • dtype (torch.dtype, 可选) - 返回的张量的数据类型。默认为 None

返回类型

Tensor

fast_forward(n)[源代码]

该函数用于快速将SobolEngine的状态向前推进n步。这相当于抽取n个样本但不使用它们。

参数

n (Int) – 需要快进的步数。

reset()[源代码]

用于将 SobolEngine 重置为初始状态的函数。

本页目录