megengine.random.beta

beta(alpha, beta, size=None)

服从贝塔分布 \(\operatorname{Beta}(\alpha, \beta)\) 的随机变量。

对应的概率密度函数为

\[p(x)=\frac{1}{\mathrm{~B}(\alpha, \beta)} x^{\alpha-1}(1-x)^{\beta-1} \quad \text { for } \alpha, \beta>0,\]

其中 \(\mathrm{~B}(\alpha, \beta)\) 是 Beta 函数,

\[\mathrm{~B}(\alpha, \beta)=\int_{0}^{1} t^{\alpha-1}(1-t)^{\beta-1} d t 。\]
参数
  • alpha (Union[Tensor, float]) – 分布的 alpha 参数。必须是非负数。

  • beta (Union[Tensor, float]) – 分布的 beta 参数。必须是非负数。

  • size (Optional[Iterable[int]]) – 输出向量的大小。如果 alpha 和 beta 是标量,例如给定大小为 (m, n),则输出形状为 (m, n)。如果 alpha 或 beta 是一个向量,例如给定的大小是 (m, n) ,那么输出形状是 (m, n) + broadcast(alpha, beta).shape.

返回

输出张量

实际案例

import megengine as mge
import megengine.random as rand

x = rand.beta(alpha=2, beta=1, size=(2, 2))
print(x.numpy())

alpha = mge.Tensor([[0.5],
                    [  3]], dtype="float32")
beta = mge.Tensor([0.5,5], dtype="float32")

x = rand.beta(alpha=alpha, beta=beta)
print(x.numpy())

x = rand.beta(alpha=alpha, beta=beta, size=2)
print(x.numpy())

输出:

[[0.582565   0.91763186]
 [0.86963767 0.6088103 ]]

[[0.41503012 0.16438372]
 [0.90159506 0.47588003]]

[[[0.55195075 0.01111084]
  [0.95298755 0.25048104]]
 [[0.11680304 0.13859665]
  [0.997879   0.43259275]]]