Gamma¶
伽马分布
伽马分布的概率密度满足一下公式:
\[ \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])
方法¶
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。