mindspore/docs/api/api_python/ops/mindspore.ops.func_multinom...

34 lines
2.4 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

mindspore.ops.multinomial
=========================
.. py:function:: mindspore.ops.multinomial(input, num_samples, replacement=True, seed=None)
生成一个多项式分布的tensor。
多项式分布是一种概率分布把二项分布公式推广至多种状态就得到了多项式分布。在多项式分布中每个事件都有一个固定的概率这些概率的和为1。
本接口的作用是对输入 `input` 进行 `num_samples` 次抽样输出的tensor则为每一次抽样时输入tensor的索引其中 `input` 中的值为每次抽样取到对应索引的概率。
这里我们给一个相对极端的用例方便理解我们给定一个输入概率值tensor值为 `[90 / 100, 10 / 100, 0]` 代表我们一共可以对三个索引进行抽样分别为索引0、索引1和索引2它们被抽中的概率分别为90%、10%和0%我们对其进行n次抽样抽样的结果则为多项式分布的计算结果计算结果长度与抽样次数一致。
在样例代码case 1中我们对其进行两次不放回抽样`replacement```False``由于每次抽样抽到索引0的概率为90%因此抽到的结果第一次大概率是抽到索引0由于抽到索引2的概率为0因此抽样两次结果不可能出现索引2那第二次结果一定是索引1因此结果序列为 `[0, 1]`
在样例代码case 2中我们对其进行10次放回抽样`replacement```True``可以看到计算结果中大概有90%的抽样结果为抽到索引0符合预期。
在样例代码case 3中我们将输入扩展为二维可以看到抽样结果在每一个维度中的结果也符合抽样预期。
.. note::
输入的行不需要求和为1当使用值作为权重的情况下但必须是非负的、有限的并且和不能为0。在使用值作为权重的情况下可以理解为对输入沿最后一维进行了归一化操作以此保证概率和为1。
.. warning::
Ascend后端不支持随机数重现功能 `seed` 参数不起作用。
参数:
- **input** (Tensor) - 包含概率值的tensor。
- **num_samples** (int) - 采样的次数。
- **replacement** (bool可选) - 是否放回,默认 ``True``
- **seed** (int可选) - 随机种子,默认 ``None``
返回:
Tensor