Gamma

class paddle.distribution. Gamma ( concentration, rate ) [源代码]

伽马分布

伽马分布的概率密度满足一下公式:

\[ \begin{align}\begin{aligned}f(x; \alpha, \beta, x > 0) = \frac{\beta^{\alpha}}{\Gamma(\alpha)} x^{\alpha-1}e^{-\beta x}\\\Gamma(\alpha)=\int_{0}^{\infty} x^{\alpha-1} e^{-x} \mathrm{~d} x, (\alpha>0)\end{aligned}\end{align} \]

上面数学公式中:

\(concentration=\alpha\):表示集中参数。

\(rate=\beta\):表示率参数。

参数

  • concentration (float|Tensor) - 率参数,该值必须大于零。支持 Broadcast 语义。当参数类型为 Tensor 时,表示批量创建多个不同参数的分布,batch_shape (参考 Distribution 基类) 为参数。

  • rate (float|Tensor) - 率参数,该值必须大于零。支持 Broadcast 语义。当参数类型为 Tensor 时,表示批量创建多个不同参数的分布,batch_shape (参考 Distribution 基类) 为参数。

代码示例

>>> import paddle

>>> # scale input
>>> gamma = paddle.distribution.Gamma(0.5, 0.5)
>>> print(gamma.mean)
Tensor(shape=[], dtype=float32, place=Place(gpu:0), stop_gradient=True,
       1.)

>>> print(gamma.variance)
Tensor(shape=[], dtype=float32, place=Place(gpu:0), stop_gradient=True,
       2.)

>>> print(gamma.entropy())
Tensor(shape=[], dtype=float32, place=Place(gpu:0), stop_gradient=True,
       0.78375685)

>>> # tensor input with broadcast
>>> gamma = paddle.distribution.Gamma(paddle.to_tensor([0.2, 0.4]), paddle.to_tensor(0.6))
>>> print(gamma.mean)
Tensor(shape=[2], dtype=float32, place=Place(gpu:0), stop_gradient=True,
       [0.33333331, 0.66666663])

>>> print(gamma.variance)
Tensor(shape=[2], dtype=float32, place=Place(gpu:0), stop_gradient=True,
       [0.55555552, 1.11111104])

>>> print(gamma.entropy())
Tensor(shape=[2], dtype=float32, place=Place(gpu:0), stop_gradient=True,
       [-1.99634242,  0.17067254])

属性

mean

伽马分布的均值。

variance

伽马分布的方差。

方法

prob(value)

伽马分布的概率密度函数。

参数

  • value (float|Tensor) - 输入值。

返回

  • Tensor - value 对应的概率密度。

log_prob(value)

伽马分布的对数概率密度函数。

参数

  • value (float|Tensor) - 输入值。

返回

  • Tensor - value 对应的对数概率密度。

entropy()

伽马分布的信息熵。

返回

  • Tensor: 信息熵。

kl_divergence(other)

两个伽马分布之间的 KL 散度。

参数

  • other (Geometric) - Gamma 的实例。

返回

  • Tensor: 两个伽马分布之间的 KL 散度。

sample(shape)

随机采样,生成指定维度的样本。

参数

  • shape (Sequence[int], optional) - 采样的样本维度。

返回

  • Tensor - 指定维度的样本数据。数据类型为 float32。

rsample(shape)

重参数化采样,生成指定维度的样本。

参数

  • shape (Sequence[int], optional) - 重参数化采样的样本维度。

返回

  • Tensor - 指定维度的样本数据。数据类型为 float32。