Класс ReLU
Класс ReLU применяет к входным данным
функцию активации ReLU (Rectified Linear Unit).
Функция вычисляет максимум между нулем и
элементом входного тензора: max(x, 0).
Слой не имеет настраиваемых весов и параметров.
Класс наследуется от базового класса Layer
и может использоваться как самостоятельный
слой в модели Keras.
Синтаксис
tf.keras.layers.ReLU(max_value=None, negative_slope=0.0, threshold=0.0, **kwargs)
Параметры
Слой принимает следующие параметры:
-
max_value- максимальное значение активации, по умолчаниюNone -
negative_slope- коэффициент наклона для отрицательных значений, по умолчанию0.0 -
threshold- пороговое значение, ниже которого активация обнуляется, по умолчанию0.0
Пример
Давайте применим слой ReLU к тензору,
содержащему отрицательные и положительные значения:
import tensorflow as tf
t = tf.constant([-3, -1, 0, 1, 3], dtype=tf.float32)
layer = tf.keras.layers.ReLU()
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([0. 0. 0. 1. 3.], shape=(5,), dtype=float32)
Пример
Давайте применим слой ReLU к двумерному тензору:
import tensorflow as tf
t = tf.constant([[-2, 4, -6], [8, -10, 12]], dtype=tf.float32)
layer = tf.keras.layers.ReLU()
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[ 0. 4. 0.]
[ 8. 0. 12.]], shape=(2, 3), dtype=float32)
Пример
Давайте используем параметр max_value,
чтобы ограничить максимальное значение активации:
import tensorflow as tf
t = tf.constant([-3, -1, 0, 1, 3, 10], dtype=tf.float32)
layer = tf.keras.layers.ReLU(max_value=5.0)
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([0. 0. 0. 1. 3. 5.], shape=(6,), dtype=float32)
Пример
Давайте используем параметр negative_slope,
чтобы отрицательные значения не обнулялись полностью:
import tensorflow as tf
t = tf.constant([-4, -2, 0, 2, 4], dtype=tf.float32)
layer = tf.keras.layers.ReLU(negative_slope=0.5)
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([-2. -1. 0. 2. 4.], shape=(5,), dtype=float32)
Пример
Давайте используем слой ReLU внутри модели Keras:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(4, input_shape=(3,)),
tf.keras.layers.ReLU(),
tf.keras.layers.Dense(2)
])
t = tf.constant([[1.0, 2.0, 3.0]])
res = model(t)
print(res)
Результат выполнения кода:
tf.Tensor([[-0.8737493 0.6116909]], shape=(1, 2), dtype=float32)
Смотрите также
-
слой
LeakyReLU,
который применяет функцию активации с малым наклоном для отрицательных значений -
слой
PReLU,
который применяет параметризованную функцию активации ReLU -
слой
ELU,
который применяет экспоненциальную функцию активации -
слой
Activation,
который применяет произвольную функцию активации