| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084 |
- # Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- from paddle.utils.inplace_utils import inplace_apis_in_dygraph_only
- from .. import _C_ops
- from ..base.data_feeder import check_variable_and_dtype
- from ..framework import LayerHelper, in_dynamic_or_pir_mode
- from .layer_function_generator import (
- generate_activation_fn,
- generate_inplace_fn,
- generate_layer_fn,
- )
- __inplace_unary_func__ = [
- 'exp_',
- 'sqrt_',
- 'rsqrt_',
- 'ceil_',
- 'floor_',
- 'round_',
- 'reciprocal_',
- 'sigmoid_',
- 'abs_',
- 'sin_',
- 'sinh_',
- 'asin_',
- 'asinh_',
- 'cos_',
- 'cosh_',
- 'acos_',
- 'acosh_',
- 'tan_',
- 'atan_',
- 'atanh_',
- 'expm1_',
- 'erf_',
- 'square_',
- ]
- __all__ = []
- # It is a hot fix in some unittest using:
- # paddle.scale(x=x, scale=10.0, out=out_var)
- # e.g.: test_program_code.py, test_dist_train.py
- globals()['_scale'] = generate_layer_fn('scale')
- for _OP in set(__inplace_unary_func__):
- func = generate_inplace_fn(_OP)
- func.__module__ = __name__
- _func = inplace_apis_in_dygraph_only(func)
- globals()[_OP] = _func
- def abs(x, name=None):
- """
- Perform elementwise abs for input `x`.
- .. math::
- out = |x|
- Args:
- x (Tensor): The input Tensor with data type int32, int64, float16, float32 and float64.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor.A Tensor with the same data type and shape as :math:`x`.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.abs(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [0.40000001, 0.20000000, 0.10000000, 0.30000001])
- """
- return generate_activation_fn('abs')(x, name)
- def acos(x, name=None):
- """
- Acos Activation Operator.
- .. math::
- out = cos^{-1}(x)
- Args:
- x (Tensor): Input of Acos operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Acos operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.acos(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [1.98231316, 1.77215421, 1.47062886, 1.26610363])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.acos(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'acos',
- )
- helper = LayerHelper('acos', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='acos', inputs={"X": x}, outputs={"Out": out})
- return out
- def acosh(x, name=None):
- """
- Acosh Activation Operator.
- .. math::
- out = acosh(x)
- Args:
- x (Tensor): Input of Acosh operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Acosh operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([1., 3., 4., 5.])
- >>> out = paddle.acosh(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [0. , 1.76274717, 2.06343699, 2.29243159])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.acosh(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'acosh',
- )
- helper = LayerHelper('acosh', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='acosh', inputs={"X": x}, outputs={"Out": out})
- return out
- def asin(x, name=None):
- """
- Arcsine Operator.
- .. math::
- out = sin^{-1}(x)
- Args:
- x (Tensor): Input of Asin operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Same shape and dtype as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.asin(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.41151685, -0.20135793, 0.10016742, 0.30469266])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.asin(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'asin',
- )
- helper = LayerHelper('asin', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='asin', inputs={"X": x}, outputs={"Out": out})
- return out
- def asinh(x, name=None):
- """
- Asinh Activation Operator.
- .. math::
- out = asinh(x)
- Args:
- x (Tensor): Input of Asinh operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Asinh operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.asinh(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.39003533, -0.19869010, 0.09983408, 0.29567307])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.asinh(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'asinh',
- )
- helper = LayerHelper('asinh', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='asinh', inputs={"X": x}, outputs={"Out": out})
- return out
- def atan(x, name=None):
- """
- Arctangent Operator.
- .. math::
- out = tan^{-1}(x)
- Args:
- x (Tensor): Input of Atan operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Same shape and dtype as input x.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.atan(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.38050640, -0.19739556, 0.09966865, 0.29145682])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.atan(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'atan',
- )
- helper = LayerHelper('atan', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='atan', inputs={"X": x}, outputs={"Out": out})
- return out
- def atanh(x, name=None):
- """
- Atanh Activation Operator.
- .. math::
- out = atanh(x)
- Args:
- x (Tensor): Input of Atan operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Atanh operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.atanh(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.42364895, -0.20273255, 0.10033534, 0.30951962])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.atanh(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'atanh',
- )
- helper = LayerHelper('atanh', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='atanh', inputs={"X": x}, outputs={"Out": out})
- return out
- def ceil(x, name=None):
- """
- Ceil Operator. Computes ceil of x element-wise.
- .. math::
- out = \\left \\lceil x \\right \\rceil
- Args:
- x (Tensor): Input of Ceil operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Ceil operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.ceil(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0., -0., 1. , 1. ])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.ceil(x)
- else:
- check_variable_and_dtype(
- x, 'x', ['float16', 'uint16', 'float32', 'float64'], 'ceil'
- )
- helper = LayerHelper('ceil', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='ceil', inputs={"X": x}, outputs={"Out": out})
- return out
- def cos(x, name=None):
- """
- Cosine Operator. Computes cosine of x element-wise.
- Input range is `(-inf, inf)` and output range is `[-1,1]`.
- .. math::
- out = cos(x)
- Args:
- x (Tensor): Input of Cos operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Cos operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.cos(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [0.92106098, 0.98006660, 0.99500418, 0.95533651])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.cos(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- ['float16', 'float32', 'float64', 'complex64', 'complex128'],
- 'cos',
- )
- helper = LayerHelper('cos', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='cos', inputs={"X": x}, outputs={"Out": out})
- return out
- def cosh(x, name=None):
- """
- Cosh Activation Operator.
- Input range `(-inf, inf)`, output range `(1, inf)`.
- .. math::
- out = \\frac{exp(x)+exp(-x)}{2}
- Args:
- x (Tensor): Input of Cosh operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Cosh operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.cosh(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [1.08107233, 1.02006674, 1.00500417, 1.04533851])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.cosh(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'cosh',
- )
- helper = LayerHelper('cosh', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='cosh', inputs={"X": x}, outputs={"Out": out})
- return out
- def exp(x, name=None):
- """
- Computes exp of x element-wise with a natural number `e` as the base.
- .. math::
- out = e^x
- Args:
- x (Tensor): Input of Exp operator, an N-D Tensor, with data type int32, int64, float16, float32, float64, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Exp operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.exp(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [0.67032003, 0.81873077, 1.10517097, 1.34985888])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.exp(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'int32',
- 'int64',
- 'uint16',
- 'float16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'exp',
- )
- helper = LayerHelper('exp', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='exp', inputs={"X": x}, outputs={"Out": out})
- return out
- def expm1(x, name=None):
- """
- Expm1 Operator. Computes expm1 of x element-wise with a natural number :math:`e` as the base.
- .. math::
- out = e^x - 1
- Args:
- x (Tensor): Input of Expm1 operator, an N-D Tensor, with data type int32, int64, float16, float32, float64, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Expm1 operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.expm1(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.32967997, -0.18126924, 0.10517092, 0.34985882])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.expm1(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'int32',
- 'int64',
- 'complex64',
- 'complex128',
- ],
- 'expm1',
- )
- helper = LayerHelper('expm1', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='expm1', inputs={"X": x}, outputs={"Out": out})
- return out
- def floor(x, name=None):
- """
- Floor Activation Operator. Computes floor of x element-wise.
- .. math::
- out = \\lfloor x \\rfloor
- Args:
- x (Tensor): Input of Floor operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Floor operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.floor(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-1., -1., 0., 0.])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.floor(x)
- else:
- check_variable_and_dtype(
- x, 'x', ['float16', 'uint16', 'float32', 'float64'], 'floor'
- )
- helper = LayerHelper('floor', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='floor', inputs={"X": x}, outputs={"Out": out})
- return out
- def reciprocal(x, name=None):
- """
- Reciprocal Activation Operator.
- .. math::
- out = \\frac{1}{x}
- Args:
- x (Tensor): Input of Reciprocal operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Reciprocal operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.reciprocal(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-2.50000000, -5. , 10. , 3.33333325])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.reciprocal(x)
- else:
- check_variable_and_dtype(
- x, 'x', ['float16', 'uint16', 'float32', 'float64'], 'reciprocal'
- )
- helper = LayerHelper('reciprocal', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(
- type='reciprocal', inputs={"X": x}, outputs={"Out": out}
- )
- return out
- def round(x, name=None):
- """
- Round the values in the input to the nearest integer value.
- .. code-block:: text
- input:
- x.shape = [4]
- x.data = [1.2, -0.9, 3.4, 0.9]
- output:
- out.shape = [4]
- out.data = [1., -1., 3., 1.]
- Args:
- x (Tensor): Input of Round operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Round operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.5, -0.2, 0.6, 1.5])
- >>> out = paddle.round(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-1., -0., 1., 2.])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.round(x)
- else:
- check_variable_and_dtype(
- x, 'x', ['float16', 'uint16', 'float32', 'float64'], 'round'
- )
- helper = LayerHelper('round', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='round', inputs={"X": x}, outputs={"Out": out})
- return out
- def rsqrt(x, name=None):
- """
- Rsqrt Activation Operator.
- Please make sure input is legal in case of numeric errors.
- .. math::
- out = \\frac{1}{\\sqrt{x}}
- Args:
- x (Tensor): Input of Rsqrt operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Rsqrt operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([0.1, 0.2, 0.3, 0.4])
- >>> out = paddle.rsqrt(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [3.16227770, 2.23606801, 1.82574177, 1.58113885])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.rsqrt(x)
- else:
- check_variable_and_dtype(
- x, 'x', ['float16', 'uint16', 'float32', 'float64'], 'rsqrt'
- )
- helper = LayerHelper('rsqrt', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='rsqrt', inputs={"X": x}, outputs={"Out": out})
- return out
- def sigmoid(x, name=None):
- """
- Sigmoid Activation.
- .. math::
- out = \\frac{1}{1 + e^{-x}}
- Args:
- x (Tensor): Input of Sigmoid operator, an N-D Tensor, with data type float16, float32, float64, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Sigmoid operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> import paddle.nn.functional as F
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = F.sigmoid(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [0.40131235, 0.45016602, 0.52497917, 0.57444251])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.sigmoid(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'float32',
- 'float64',
- 'uint16',
- 'complex64',
- 'complex128',
- ],
- 'sigmoid',
- )
- helper = LayerHelper('sigmoid', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='sigmoid', inputs={"X": x}, outputs={"Out": out})
- return out
- def sin(x, name=None):
- """
- Sine Activation Operator.
- .. math::
- out = sin(x)
- Args:
- x (Tensor): Input of Sin operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Sin operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.sin(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.38941833, -0.19866933, 0.09983342, 0.29552022])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.sin(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'sin',
- )
- helper = LayerHelper('sin', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='sin', inputs={"X": x}, outputs={"Out": out})
- return out
- def sinh(x, name=None):
- """
- Sinh Activation Operator.
- .. math::
- out = sinh(x)
- Args:
- x (Tensor): Input of Sinh operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Sinh operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.sinh(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.41075233, -0.20133601, 0.10016675, 0.30452031])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.sinh(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'sinh',
- )
- helper = LayerHelper('sinh', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='sinh', inputs={"X": x}, outputs={"Out": out})
- return out
- def sqrt(x, name=None):
- """
- Sqrt Activation Operator.
- .. math::
- out=\\sqrt{x}=x^{1/2}
- Args:
- x (Tensor): Input of Sqrt operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Sqrt operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([0.1, 0.2, 0.3, 0.4])
- >>> out = paddle.sqrt(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [0.31622776, 0.44721359, 0.54772258, 0.63245553])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.sqrt(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- ['float16', 'uint16', 'float32', 'float64'],
- 'sqrt',
- )
- helper = LayerHelper('sqrt', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='sqrt', inputs={"X": x}, outputs={"Out": out})
- return out
- def square(x, name=None):
- """
- Square each elements of the inputs.
- .. math::
- out = x^2
- Args:
- x (Tensor): Input of Square operator, an N-D Tensor, with data type float32, float64, float16, complex64 or complex128.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Square operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.square(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [0.16000001, 0.04000000, 0.01000000, 0.09000000])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.square(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'int32',
- 'int64',
- 'float16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'square',
- )
- helper = LayerHelper('square', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='square', inputs={"X": x}, outputs={"Out": out})
- return out
- def tan(x, name=None):
- """
- Tangent Operator. Computes tangent of x element-wise.
- Input range is `(k*pi-pi/2, k*pi+pi/2)` and output range is `(-inf, inf)`.
- .. math::
- out = tan(x)
- Args:
- x (Tensor): Input of Tan operator, an N-D Tensor, with data type float32, float64 or float16.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor. Output of Tan operator, a Tensor with shape same as input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.tan(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.42279324, -0.20271003, 0.10033467, 0.30933627])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.tan(x)
- else:
- check_variable_and_dtype(
- x,
- 'x',
- [
- 'float16',
- 'uint16',
- 'float32',
- 'float64',
- 'complex64',
- 'complex128',
- ],
- 'tan',
- )
- helper = LayerHelper('tan', **locals())
- out = helper.create_variable_for_type_inference(dtype=x.dtype)
- helper.append_op(type='tan', inputs={"X": x}, outputs={"Out": out})
- return out
- def erf(x, name=None):
- r"""
- The error function.
- For more details, see `Error function <https://en.wikipedia.org/wiki/Error_function>`_.
- Equation:
- .. math::
- out = \frac{2}{\sqrt{\pi}} \int_{0}^{x}e^{- \eta^{2}}d\eta
- Args:
- x (Tensor): The input tensor, it's data type should be float32, float64.
- name (str, optional): Name for the operation (optional, default is None). For more information, please refer to :ref:`api_guide_Name`.
- Returns:
- Tensor: The output of Erf, dtype: float32 or float64, the same as the input, shape: the same as the input.
- Examples:
- .. code-block:: python
- >>> import paddle
- >>> x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
- >>> out = paddle.erf(x)
- >>> print(out)
- Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
- [-0.42839241, -0.22270259, 0.11246292, 0.32862678])
- """
- if in_dynamic_or_pir_mode():
- return _C_ops.erf(x)
- locals_var = locals().copy()
- kwargs = {}
- for name, val in locals_var.items():
- if val is not None:
- kwargs[name] = val
- return generate_layer_fn('erf')(**kwargs)
|