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