rectified linear unit activation function layer formula python fx maxx 0 fx maxvalue if x maxvalue fx x if threshold x maxvalue fx negativeslope x threshold otherwise example python relulayer keras layers activations relu maxvalue10 negativeslope0 5 threshold0 input np array10 5 0 0 5 10 result relulayerinput result 5 2 5 0 5 10 args maxvalue float 0 maximum activation value none means unlimited defaults to none negativeslope float 0 negative slope coefficient defaults to 0 0 threshold float 0 threshold value for thresholded activation defaults to 0 0 kwargs base layer keyword arguments such as name and dtype rectified linear unit activation function layer formula python f x max x 0 f x max_value if x max_value f x x if threshold x max_value f x negative_slope x threshold otherwise example python relu_layer keras layers activations relu max_value 10 negative_slope 0 5 threshold 0 input np array 10 5 0 0 5 10 result relu_layer input result 5 2 5 0 5 10 args max_value float 0 maximum activation value none means unlimited defaults to none negative_slope float 0 negative slope coefficient defaults to 0 0 threshold float 0 threshold value for thresholded activation defaults to 0 0 kwargs base layer keyword arguments such as name and dtype
from keras import activations
from keras.api_export import keras_export
from keras.layers.layer import Layer


@keras_export("keras.layers.ReLU")
class ReLU(Layer):
    

    def __init__(
        self, max_value=None, negative_slope=0.0, threshold=0.0, **kwargs
    ):
        super().__init__(**kwargs)
        if max_value is not None and max_value < 0.0:
            raise ValueError(
                "max_value of a ReLU layer cannot be a negative "
                f"value. Received: max_value={max_value}"
            )
        if negative_slope is None or negative_slope < 0.0:
            raise ValueError(
                "negative_slope of a ReLU layer cannot be a negative "
                f"value. Received: negative_slope={negative_slope}"
            )
        if threshold is None or threshold < 0.0:
            raise ValueError(
                "threshold of a ReLU layer cannot be a negative "
                f"value. Received: threshold={threshold}"
            )

        self.supports_masking = True
        self.max_value = max_value
        self.negative_slope = negative_slope
        self.threshold = threshold

    def call(self, inputs):
        return activations.relu(
            inputs,
            negative_slope=self.negative_slope,
            max_value=self.max_value,
            threshold=self.threshold,
        )

    def get_config(self):
        config = super().get_config()
        config.update(
            {
                "max_value": self.max_value,
                "negative_slope": self.negative_slope,
                "threshold": self.threshold,
            }
        )
        return config

    def compute_output_shape(self, input_shape):
        return input_shape