merge_selected_rows

paddle.fluid.layers. merge_selected_rows ( x, name=None ) [源代码]

累加合并 SelectedRows ( x ) 中的重复行,并对行值由小到大重新排序。

参数:

  • x (Variable) : 类型为 SelectedRows,选中行允许重复。

  • name (basestring|None) : 输出变量名称。

返回:

  • 含有 SelectedRows 的 Variable,选中行不重复。

返回类型:

  • Variable(变量)。

代码示例

  1. import paddle.fluid as fluid
  2. import numpy
  3. place = fluid.CPUPlace()
  4. block = fluid.default_main_program().global_block()
  5. var = block.create_var(name="X2",
  6. dtype="float32",
  7. persistable=True,
  8. type=fluid.core.VarDesc.VarType.SELECTED_ROWS)
  9. y = fluid.layers.merge_selected_rows(var)
  10. z = fluid.layers.get_tensor_from_selected_rows(y)
  11. x_rows = [0, 2, 2, 4, 19]
  12. row_numel = 2
  13. np_array = numpy.ones((len(x_rows), row_numel)).astype("float32")
  14. x = fluid.global_scope().var("X2").get_selected_rows()
  15. x.set_rows(x_rows)
  16. x.set_height(20)
  17. x_tensor = x.get_tensor()
  18. x_tensor.set(np_array, place)
  19. exe = fluid.Executor(place=place)
  20. result = exe.run(fluid.default_main_program(), fetch_list=[z])
  21. print("x_rows: ", x_rows)
  22. print("np_array: ", np_array)
  23. print("result: ", result)
  24. '''
  25. Output Values:
  26. ('x_rows: ', [0, 2, 2, 4, 19])
  27. ('np_array: ', array([[1., 1.],
  28. [1., 1.],
  29. [1., 1.],
  30. [1., 1.],
  31. [1., 1.]], dtype=float32))
  32. ('result: ', [array([[1., 1.],
  33. [2., 2.],
  34. [1., 1.],
  35. [1., 1.]], dtype=float32)])
  36. '''