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]