Source code for paddle.fluid.layers.ops

#   Copyright (c) 2018 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 __future__ import print_function
import os
from .layer_function_generator import generate_layer_fn, generate_activation_fn
from .. import core
from ..framework import convert_np_dtype_to_dtype_

__activations_noattr__ = [
    'sigmoid',
    'logsigmoid',
    'exp',
    'tanh',
    'atan',
    'tanh_shrink',
    'softshrink',
    'sqrt',
    'rsqrt',
    'abs',
    'ceil',
    'floor',
    'cos',
    'acos',
    'asin',
    'sin',
    'round',
    'reciprocal',
    'square',
    'softplus',
    'softsign',
]

__all__ = []

for _OP in set(__all__):
    globals()[_OP] = generate_layer_fn(_OP)

# It is a hot fix in some unittest using:
#   fluid.layers.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')

globals()['_elementwise_div'] = generate_layer_fn('elementwise_div')

__all__ += __activations_noattr__

for _OP in set(__activations_noattr__):
    globals()[_OP] = generate_activation_fn(_OP)

__all__ += ["uniform_random"]

_uniform_random_ = generate_layer_fn('uniform_random')


[docs]def uniform_random(shape, dtype='float32', min=-1.0, max=1.0, seed=0): """ This operator initializes a variable with random values sampled from a uniform distribution. The random result is in set [min, max]. Args: shape (list): The shape of output variable. dtype(np.dtype|core.VarDesc.VarType|str): The type of data, such as float32, float64 etc. Default: float32. min (float): Minimum value of uniform random. Default -1.0. max (float): Maximun value of uniform random. Default 1.0. seed (int): Random seed used for generating samples. 0 means use a seed generated by the system. Note that if seed is not 0, this operator will always generate the same random numbers every time. Default 0. Examples: .. code-block:: python import paddle.fluid as fluid result = fluid.layers.uniform_random(shape=[32, 784]) """ if not isinstance(dtype, core.VarDesc.VarType): dtype = convert_np_dtype_to_dtype_(dtype) locals_var = locals().copy() kwargs = dict() for name, val in locals_var.items(): if val is not None: kwargs[name] = val return _uniform_random_(**kwargs)
__all__ += ['hard_shrink'] _hard_shrink_ = generate_layer_fn('hard_shrink')
[docs]def hard_shrink(x, threshold=None): locals_var = locals().copy() kwargs = dict() for name, val in locals_var.items(): if val is not None: kwargs[name] = val return _hard_shrink_(**kwargs)
hard_shrink.__doc__ = _hard_shrink_.__doc__ + """ Examples: >>> import paddle.fluid as fluid >>> data = fluid.layers.data(name="input", shape=[784]) >>> result = fluid.layers.hard_shrink(x=data, threshold=0.3) """ __all__ += ['cumsum'] _cum_sum_ = generate_layer_fn('cumsum')
[docs]def cumsum(x, axis=None, exclusive=None, reverse=None): locals_var = locals().copy() kwargs = dict() for name, val in locals_var.items(): if val is not None: kwargs[name] = val return _cum_sum_(**kwargs)
cumsum.__doc__ = _cum_sum_.__doc__ + """ Examples: >>> import paddle.fluid as fluid >>> data = fluid.layers.data(name="input", shape=[32, 784]) >>> result = fluid.layers.cumsum(data, axis=0) """ __all__ += ['thresholded_relu'] _thresholded_relu_ = generate_layer_fn('thresholded_relu')
[docs]def thresholded_relu(x, threshold=None): locals_var = locals().copy() kwargs = dict() for name, val in locals_var.items(): if val is not None: kwargs[name] = val return _thresholded_relu_(**kwargs)
thresholded_relu.__doc__ = _thresholded_relu_.__doc__ + """ Examples: >>> import paddle.fluid as fluid >>> data = fluid.layers.data(name="input", shape=[1]) >>> result = fluid.layers.thresholded_relu(data, threshold=0.4) """