Multinomial

class paddle.distribution. Multinomial ( total_count, probs ) [源代码]

Multinomial 表示实验次数为 total_count ,概率为 probs 的多项分布。

在概率论中,多项分布是二项分布的多元推广,表示具有 \(k\) 个类别的事件重复实验 \(n\) 次,每个类别出现次数的概率。当 \(k=2\)\(n=1\) 时,为伯努利分布,当 \(k=2\)\(n>1\) 时,为二项分布,当 \(k>2\)\(n=1\) 时,为分类分布。

多项分布概率密度函数如下:

\[f(x_1, ..., x_k; n, p_1,...,p_k) = \frac{n!}{x_1!...x_k!}p_1^{x_1}...p_k^{x_k}\]

其中, \(n\) 表示实验次数, \(k\) 表示类别数, \(p_i\) 表示一次实验中,实验结果 为第 \(i\) 个类别的概率,需要满足 \({\textstyle \sum_{i=1}^{k}p_i=1}, p_i \ge 0\) ,

\(x_i\) 表示第 \(i\) 个分类出现的次数。

参数

  • total_count (int) - 实验次数。

  • probs (Tensor) - 每个类别发生的概率。最后一维为事件维度,其它维为批维度。probs 中 的每个元素取值范围为 [0,1] 。如果输入数据大于1,会沿着最后一维进行归一化操作。

代码示例

import paddle

multinomial = paddle.distribution.Multinomial(10, paddle.to_tensor([0.2, 0.3, 0.5]))
print(multinomial.sample((2, 3)))
# Tensor(shape=[2, 3, 3], dtype=float32, place=Place(gpu:0), stop_gradient=True,
#        [[[1., 4., 5.],
#          [0., 2., 8.],
#          [2., 4., 4.]],

#         [[1., 6., 3.],
#          [3., 3., 4.],
#          [3., 4., 3.]]])

属性

mean

均值

variance

方差

方法

prob(value)

计算value的概率。

参数

  • value (Tensor) - 待计算值。

返回

  • Tensor: value的概率。

log_prob(value)

计算value的对数概率。

参数

  • value (Tensor) - 待计算值。

返回

  • Tensor: value的对数概率。

sample(shape=())

生成满足特定形状的样本数据。

参数

  • shape (Sequence[int], 可选):采样形状。

返回

  • Tensor: 样本数据。