lod_reset

  • paddle.fluid.layers.lod_reset(x, y=None, target_lod=None)[源代码]

根据给定的参数 ytarget_lod ,重设输入 x (LoDTensor) 的 LoD 信息。

  • 参数:
    • x (Variable) : 输入变量,类型为 Tensor 或者 LoDTensor。
    • y (Variable|None) : 当 y 非空时,输出 LoDTensor 的 LoD 信息将与 y 的 LoD 一致。
    • target_lod (list|tuple|None) : 一级 LoD,当 y 为空时,输出 LoDTensor 的 LoD 信息将与 target_lod 一致。
  • 返回:
    • Variable (LoDTensor),重设了 LoD 信息的 LoDTensor。
  • 返回类型:
    • Variable (LoDTensor)。
  • 抛出异常:
    • TypeError : 当 ytarget_lod 二者均为空时抛出此异常。
  1. * 1:
  2.  
  3. x: 包含一级 LoD 信息的 LoDTensor
  4. x.lod = [[ 2, 3, 1 ]]
  5. x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]]
  6. x.dims = [6, 1]
  7.  
  8. y: None
  9.  
  10. target_lod: [4, 2]
  11.  
  12. Output: 包含一级 LoD 信息的 LoDTensor
  13. out.lod = [[4, 2]]
  14. out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]]
  15. out.dims = [6, 1]
  16.  
  17. * 2:
  18.  
  19. x: 包含一级 LoD 信息的 LoDTensor
  20. x.lod = [[2, 3, 1]]
  21. x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]]
  22. x.dims = [6, 1]
  23.  
  24. y: 普通 Tensor,不含 LoD 信息
  25. y.data = [[2, 4]]
  26. y.dims = [1, 3]
  27.  
  28. target_lod: y 不为空时,此参数不起作用
  29.  
  30. Output: 包含一级 LoD 信息的 LoDTensor
  31. out.lod = [[2, 4]]
  32. out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]]
  33. out.dims = [6, 1]
  34.  
  35. * 3:
  36.  
  37. x: 包含一级 LoD 信息的 LoDTensor
  38. x.lod = [[2, 3, 1]]
  39. x.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]]
  40. x.dims = [6, 1]
  41.  
  42. y: 包含二级 LoD 信息的 LoDTensor
  43. y.lod = [[2, 2], [2, 2, 1, 1]]
  44. y.data = [[1.1], [2.1], [3.1], [4.1], [5.1], [6.1]]
  45. y.dims = [6, 1]
  46.  
  47. target_lod: y 不为空时,此参数不起作用
  48.  
  49. Output: 包含二级 LoD 信息的 LoDTensor
  50. out.lod = [[2, 2], [2, 2, 1, 1]]
  51. out.data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]]
  52. out.dims = [6, 1]

代码示例

  1. import paddle.fluid as fluid
  2. import numpy
  3.  
  4. # Graph Organizing
  5. x = fluid.layers.data(name='x', shape=[6])
  6. y = fluid.layers.data(name='y', shape=[6], lod_level=2)
  7. output = fluid.layers.lod_reset(x=x, y=y)
  8.  
  9. # Create an executor using CPU as an example
  10. place = fluid.CPUPlace()
  11. exe = fluid.Executor(place)
  12. exe.run(fluid.default_startup_program())
  13.  
  14. # Execute
  15. x_tensor = fluid.core.LoDTensor()
  16. x_tensor.set(numpy.ones([6]).astype(numpy.float32), place)
  17. y_ndarray = numpy.ones([6]).astype(numpy.float32)
  18. y_lod = [[2, 2], [2, 2, 1, 1]]
  19. y_tensor = fluid.create_lod_tensor(y_ndarray, y_lod, place)
  20.  
  21. res, = exe.run(fluid.default_main_program(),
  22. feed={'x':x_tensor, 'y':y_tensor},
  23. fetch_list=[output],
  24. return_numpy=False)
  25. print(res)
  26. # Output Value:
  27. # lod: [[0, 2, 4], [0, 2, 4, 5, 6]]
  28. # dim: 6
  29. # layout: NCHW
  30. # dtype: float
  31. # data: [1 1 1 1 1 1]