multinomial

paddle. multinomial ( x, num_samples=1, replacement=False, name=None ) [源代码]

该OP以输入 x 为概率,生成一个多项分布的Tensor。 输入 x 是用来随机采样的概率分布, x 中每个元素都应该大于等于0,且不能都为0。 参数 replacement 表示它是否是一个可放回的采样,如果 replacement 为True, 能重复对一种类别采样。

参数:

  • x (Tensor) - 输入的概率值。数据类型为 float32float64 .

  • num_samples (int, 可选) - 采样的次数(可选,默认值为1)。

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

  • name (str, 可选) - 操作的名称(可选,默认值为None)。更多信息请参见 Name

返回:

Tensor:多项分布采样得到的随机Tensor,为 num_samples 次采样得到的类别下标。

代码示例

  1. import paddle
  2. paddle.seed(100) # on CPU device
  3. x = paddle.rand([2,4])
  4. print(x)
  5. # [[0.5535528 0.20714243 0.01162981 0.51577556]
  6. # [0.36369765 0.2609165 0.18905126 0.5621971 ]]
  7. paddle.seed(200) # on CPU device
  8. out1 = paddle.multinomial(x, num_samples=5, replacement=True)
  9. print(out1)
  10. # [[3 3 0 0 0]
  11. # [3 3 3 1 0]]
  12. # out2 = paddle.multinomial(x, num_samples=5)
  13. # InvalidArgumentError: When replacement is False, number of samples
  14. # should be less than non-zero categories
  15. paddle.seed(300) # on CPU device
  16. out3 = paddle.multinomial(x, num_samples=3)
  17. print(out3)
  18. # [[3 0 1]
  19. # [3 1 0]]