diff --git a/paddle/fluid/API.spec b/paddle/fluid/API.spec index 393412c590041bb0d8ff50b4ce18177f3b542d78..004469a0c9cdbbb3dcd4c975885a501ed4f5b097 100644 --- a/paddle/fluid/API.spec +++ b/paddle/fluid/API.spec @@ -164,7 +164,7 @@ paddle.fluid.layers.reshape (ArgSpec(args=['x', 'shape', 'actual_shape', 'act', paddle.fluid.layers.squeeze (ArgSpec(args=['input', 'axes', 'name'], varargs=None, keywords=None, defaults=(None,)), ('document', 'ebbac07662a6e22e8e299ced880c7775')) paddle.fluid.layers.unsqueeze (ArgSpec(args=['input', 'axes', 'name'], varargs=None, keywords=None, defaults=(None,)), ('document', 'b9bd3129d36a70e7c4385df51ff71c62')) paddle.fluid.layers.lod_reset (ArgSpec(args=['x', 'y', 'target_lod'], varargs=None, keywords=None, defaults=(None, None)), ('document', '74498d37dd622ac472cb36887fce09ea')) -paddle.fluid.layers.lod_append (ArgSpec(args=['x', 'level'], varargs=None, keywords=None, defaults=None), ('document', '527cc61c20a8fa83008115440419f92b')) +paddle.fluid.layers.lod_append (ArgSpec(args=['x', 'level'], varargs=None, keywords=None, defaults=None), ('document', '37663c7c179e920838a250ea0e28d909')) paddle.fluid.layers.lrn (ArgSpec(args=['input', 'n', 'k', 'alpha', 'beta', 'name'], varargs=None, keywords=None, defaults=(5, 1.0, 0.0001, 0.75, None)), ('document', '73d297256da8954617996958d26ee93d')) paddle.fluid.layers.pad (ArgSpec(args=['x', 'paddings', 'pad_value', 'name'], varargs=None, keywords=None, defaults=(0.0, None)), ('document', '2f189f8ef61f1c23779e1593b78755c0')) paddle.fluid.layers.pad_constant_like (ArgSpec(args=['x', 'y', 'pad_value', 'name'], varargs=None, keywords=None, defaults=(0.0, None)), ('document', '95aa1972983f30fe9b5a3713e523e20f')) diff --git a/python/paddle/fluid/layers/nn.py b/python/paddle/fluid/layers/nn.py index ee5ede577125c526cc43f58839a11ef4bee23f5c..cbbe9b9d5f11b5e10069491321b58605844efd3b 100644 --- a/python/paddle/fluid/layers/nn.py +++ b/python/paddle/fluid/layers/nn.py @@ -7099,7 +7099,7 @@ def lod_append(x, level): Args: x (Variable): Input variable which could be a tensor or LoDTensor. - level (list|tuple): The LoD level to be appended into LoD of x. + level (list|tuple|Variable): The LoD level to be appended into LoD of x. Returns: Variable: Output variable with new LoD level. @@ -7117,16 +7117,21 @@ def lod_append(x, level): from collections import Iterable if x is None: raise ValueError("Input(x) can't be None.") - if not isinstance(level, Iterable): - raise ValueError("Input(level) must be list or tuple.") + if (not isinstance(level, Iterable)) and (not isinstance(level, Variable)): + raise ValueError("Input(level) must be list, tuple or Variable.") + helper = LayerHelper("lod_append", **locals()) out = helper.create_variable_for_type_inference(dtype=x.dtype) + + inputs = {'X': x} + attrs = {'append': True} + + if isinstance(level, Variable): + inputs['Y'] = level + else: + attrs['target_lod'] = level helper.append_op( - type="lod_reset", - inputs={'X': x}, - attrs={'target_lod': level, - 'append': True}, - outputs={'Out': out}) + type="lod_reset", inputs=inputs, attrs=attrs, outputs={'Out': out}) return out