未验证 提交 ab4d3140 编写于 作者: P Pei Yang 提交者: GitHub

refine full_like en api. test=develop (#24021)

上级 a8c0fb4e
...@@ -107,6 +107,7 @@ class TestFillAnyLikeOp_attr_out(unittest.TestCase): ...@@ -107,6 +107,7 @@ class TestFillAnyLikeOp_attr_out(unittest.TestCase):
fill_value = 2.0 fill_value = 2.0
input = fluid.data(name='input', dtype='float32', shape=[2, 3]) input = fluid.data(name='input', dtype='float32', shape=[2, 3])
output = paddle.full_like(input, fill_value) output = paddle.full_like(input, fill_value)
output_dtype = paddle.full_like(input, fill_value, dtype='float32')
place = fluid.CPUPlace() place = fluid.CPUPlace()
if fluid.core.is_compiled_with_cuda(): if fluid.core.is_compiled_with_cuda():
......
...@@ -58,18 +58,25 @@ def full_like(input, ...@@ -58,18 +58,25 @@ def full_like(input,
**full_like** **full_like**
This function creates a tensor filled with `fill_value` which has identical shape and dtype This function creates a tensor filled with `fill_value` which has identical shape and dtype
with `input`. with `input`.
Args: Args:
input(Variable): The input tensor which specifies shape and dtype. input(Variable): The input tensor which specifies shape and data type. The data type can be bool, float16, float32, float64, int32, int64.
fill_value: The value to fill the tensor with. Data type can be bool, float32, float64, int32, int64. Default value is 0. fill_value(bool|float|int): The value to fill the tensor with. Default value is 0. Note: this value shouldn't exceed the range of the output data type.
out(Variable): The output tensor. out(Variable, optional): Optional output which can be any created Variable that meets the requirements to store the result of operation. If out is None, a new Varibale will be create to store the result. Default value is None.
dtype(np.dtype|core.VarDesc.VarType|str, optional): The data type of output. The default value is None, which means the output data type is the same as input.
device (string, optional): Which device to run the operator. The :attr:`device` must be None, 'cpu', 'gpu'. If :attr:`device` is None, it will be the device that the user set in the paddle program. Default value is None.
stop_gradient(bool, optional): Indicating if we stop gradient from current(out) Variable. Default value is True.
name(str, optional): The default value is None. Normally there is no need for user to set this property. For more information, please refer to :ref:`api_guide_Name`
Returns: Returns:
out(Variable): The tensor variable storing the output. out(Variable): The Tensor variable storing the output.
Examples: Examples:
.. code-block:: python .. code-block:: python
import paddle import paddle
import paddle.fluid as fluid import paddle.fluid as fluid
import numpy as np import numpy as np
input = fluid.data(name='input', dtype='float32', shape=[2, 3]) input = fluid.data(name='input', dtype='float32', shape=[2, 3])
output = paddle.full_like(input, 2.0) output = paddle.full_like(input, 2.0)
exe = fluid.Executor(fluid.CPUPlace()) exe = fluid.Executor(fluid.CPUPlace())
...@@ -80,18 +87,24 @@ def full_like(input, ...@@ -80,18 +87,24 @@ def full_like(input,
""" """
helper = LayerHelper("full_like", **locals()) helper = LayerHelper("full_like", **locals())
var_dtype = None
if dtype is None: if dtype is None:
dtype = 'float32' var_dtype = input.dtype
else:
check_dtype(dtype, 'dtype', check_dtype(
['bool', 'float16', 'float32', 'int32', 'int64'], 'full_like') dtype, 'dtype',
['bool', 'float16', 'float32', 'float64', 'int32', 'int64'],
'full_like')
var_dtype = convert_np_dtype_to_dtype_(dtype)
if out is None: if out is None:
out = helper.create_variable_for_type_inference(dtype=dtype) out = helper.create_variable_for_type_inference(dtype=dtype)
helper.append_op( helper.append_op(
type='fill_any_like', type='fill_any_like',
inputs={'X': [input]}, inputs={'X': [input]},
attrs={'value': fill_value}, attrs={'value': fill_value,
"dtype": var_dtype},
outputs={'Out': [out]}) outputs={'Out': [out]})
out.stop_gradient = stop_gradient out.stop_gradient = stop_gradient
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册