Beta

class paddle.distribution. Beta ( alpha, beta ) [源代码]

在概率论中,Beta 分布是指一组定义在 [0,1] 区间的连续概率分布,有两个参数 \(\alpha,\beta>0\),是狄利克雷(Dirichlet) 分布的一元形式。

其概率密度函数(pdf)为:

\[f(x; \alpha, \beta) = \frac{1}{B(\alpha, \beta)}x^{\alpha-1}(1-x)^{\beta-1}\]

其中,B 为 Beta 函数,表示归一化因子:

\[B(\alpha, \beta) = \int_{0}^{1} t^{\alpha - 1} (1-t)^{\beta - 1}\mathrm{d}t\]

参数

  • alpha (float|Tensor) - 即上述公式中 \(\alpha\) 参数,大于零,支持 Broadcast 语义。当参数类型为 Tensor 时,表示批量创建多个不同参数的分布,batch_shape (参考 Distribution 基类) 为参数 Broadcast 后的形状。

  • beta (float|Tensor) - 即上述公式中 \(\beta\) 参数,大于零,支持 Broadcast 语 义。当参数类型为 Tensor 时,表示批量创建多个不同参数的分布,batch_shape (参考 Distribution 基类) 为参数 Broadcast 后的形状。

代码示例

import paddle

# scale input
beta = paddle.distribution.Beta(alpha=0.5, beta=0.5)
print(beta.mean)
# Tensor(shape=[], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
#        0.50000000)
print(beta.variance)
# Tensor(shape=[], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
#        0.12500000)
print(beta.entropy())
# Tensor(shape=[], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
#        0.12500000)

# tensor input with broadcast
beta = paddle.distribution.Beta(alpha=paddle.to_tensor([0.2, 0.4]), beta=0.6)
print(beta.mean)
# Tensor(shape=[2], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
#        [0.25000000, 0.40000001])
print(beta.variance)
# Tensor(shape=[2], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
#        [0.10416666, 0.12000000])
print(beta.entropy())
# Tensor(shape=[2], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
#        [-1.91923141, -0.38095069])

方法

mean()

计算 Beta 分布均值。

variance()

计算 Beta 分布方差。

prob(value)

计算 value 的概率。

参数

  • value (Tensor) - 待计算值。

返回

  • Tensor: value 的概率。

log_prob(value)

计算 value 的对数概率。

参数

  • value (Tensor) - 待计算值。

返回

  • Tensor: value 的对数概率。

sample()

从 Beta 分布中生成满足特定形状的样本数据。

参数

  • shape (Sequence[int],可选):采样次数。最终生成样本形状为 shape+batch_shape

返回

  • Tensor:样本数据。

entropy()

计算 Beta 分布的信息熵。