mindspore.ops.multinomial
- mindspore.ops.multinomial(inputs, num_sample, replacement=True, seed=None)[源代码]
根据输入生成一个多项式分布的Tensor。
说明
输入的行不需要求和为1(当使用值作为权重的情况下),但必须是非负的、有限的,并且和不能为0。
- 参数:
inputs (Tensor) - 输入的概率值Tensor,必须是一维或二维,数据类型为float32。
num_sample (int) - 采样的次数。
replacement (bool, 可选) - 是否是可放回的采样,默认值:True。
seed (int, 可选) - 随机数种子,用于生成随机数(伪随机数),必须是非负数。默认值:None。
- 返回:
Tensor,与输入有相同的行数。每行的采样索引数为 num_samples 。数据类型为float32。
- 异常:
TypeError - 如果 x 不是数据类型不是float32的Tensor。
TypeError - 如果 num_sample 不是int。
TypeError - 如果 seed 既不是int也不是optional。
- 支持平台:
GPU
样例:
>>> 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. >>> x = Tensor([0, 9, 4, 0], mindspore.float32) >>> output = ops.multinomial(x, 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. >>> x = Tensor([0, 9, 4, 0], mstype.float32) >>> output = ops.multinomial(x, 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。 >>> x = Tensor([0, 9, 4, 0], mstype.float32) >>> output = ops.multinomial(x, 4, True) >>> print(output) [1 1 2 2]