randperm

paddle.fluid.layers.randperm(n, out=None, dtype=”int64”, device=None, stop_gradient=True, seed=0)[源代码]

该OP返回一个数值在0到n-1、顺序随机的整数排列。

参数

  • n (int): 整数排列的上限,应该大于0。
  • out (Variable, optional): 可选的输出变量,如果不为 None ,返回的整数排列保存在该变量中,默认是 None 。
  • dtype (np.dtype|core.VarDesc.VarType|str, optional): 整数排列的数据类型,支持 int64 和 int32 ,默认是 int64 。
  • device (str, optional): 指定整数排列所在的设备内存。设置为 cpu 则保存在 cpu 内存中,设置为 gpu ,则保存在 gpu 内存中,设置为 None 则保存在运行的设备内存中。默认是 None 。
  • stop_gradient (bool, optional): 返回的整数排列是否记录并更新梯度,默认是 True 。
  • seed (int, optional): 设置随机种子。seed 等于0时,每次返回不同的整数排列;seed 不等于0时,相同的 seed 返回相同的整数排列。

返回

一个数值在0到n-1、顺序随机的整数排列。

返回类型

Variable

代码示例

  1. import paddle
  2. import paddle.fluid as fluid
  3. import numpy as np
  4. # Note that, the random permutation returned by randperm depends
  5. # the random seed in computer, so the output in the next example
  6. # will be change.
  7. with fluid.dygraph.guard():
  8. out_1 = fluid.layers.randperm(6)
  9. print(out_1.numpy()) # Random permutation, for example [2 4 5 0 3 1]
  10. out_2 = fluid.dygraph.to_variable(
  11. np.array([0, 1, 2, 3])).astype(np.int64)
  12. fluid.layers.randperm(6, out_2)
  13. print(out_2.numpy()) # Random permutation, for example [5 0 2 4 1 3]
  14. out_3 = fluid.layers.randperm(6, dtype="int32", device="cpu")
  15. print(out_3.numpy()) # Random permutation, for example [3 1 4 2 5 0]
  16. out_4 = fluid.layers.randperm(6, device="cpu", stop_gradient=True)
  17. print(out_4.numpy()) # Random permutation, for example [3 1 5 2 0 4]