Multinomial¶
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.]]])