mindspore.ops.multinomial

mindspore.ops.multinomial(input, num_samples, replacement=True, seed=None)[源代码]

根据输入生成一个多项式分布的Tensor。

说明

输入的行不需要求和为1(当使用值作为权重的情况下),但必须是非负的、有限的,并且和不能为0。

参数:
  • input (Tensor) - 输入的概率值Tensor,必须是一维或二维,数据类型为float32。

  • num_samples (int) - 采样的次数。

  • replacement (bool, 可选) - 是否是可放回的采样,默认值:True。

  • seed (int, 可选) - 随机数种子,用于生成随机数(伪随机数),必须是非负数。默认值:None。

返回:

Tensor,与输入有相同的行数。每行的采样索引数为 num_samples 。数据类型为float32。

异常:
  • TypeError - 如果 input 不是数据类型不是float32的Tensor。

  • TypeError - 如果 num_samples 不是int。

  • TypeError - 如果 seed 既不是int也不是None。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> from mindspore import Tensor, ops
>>> from mindspore import dtype as mstype
>>> # case 1: The output is random, and the length of the output is the same as num_sample.
>>> input = Tensor([0, 9, 4, 0], mindspore.float32)
>>> output = ops.multinomial(input, 2)
>>> # print(output)
>>> # [1 2] or [2 1]
>>> # the case where the result is [2 1] in multiple times.
>>> # This is because the value corresponding to the index 1 is larger than the value of the index 2.
>>> print(len(output))
2
>>> # case 2: The output is random, and the length of the output is the same as num_sample.
>>> # replacement is False(Default).
>>> # If the extracted value is 0, the index value of 1 will be returned.
>>> input = Tensor([0, 9, 4, 0], mstype.float32)
>>> output = ops.multinomial(input, 4)
>>> print(output)
[1 1 2 1]
>>> # case 3: The output is random, num_sample == x_length = 4, and replacement is True,
>>> # Can extract the same elements。
>>> input = Tensor([0, 9, 4, 0], mstype.float32)
>>> output = ops.multinomial(input, 4, True)
>>> print(output)
[1 1 2 2]