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
>>> paddle.seed(2023)
>>> 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(cpu), stop_gradient=True,
    [[[1., 5., 4.],
      [0., 4., 6.],
      [1., 3., 6.]],
    [[2., 2., 6.],
      [0., 6., 4.],
      [3., 3., 4.]]])

属性

mean

均值

variance

方差

方法

prob(value)

计算 value 的概率。

参数

  • value (Tensor) - 待计算值。

返回

Tensor,value 的概率。

log_prob(value)

计算 value 的对数概率。

参数

  • value (Tensor) - 待计算值。

返回

Tensor,value 的对数概率。

sample(shape=())

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

参数

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

返回

Tensor,样本数据。