Класс ELU
Класс ELU создает слой нейронной сети,
который применяет экспоненциальную линейную
функцию активации к входным данным. Первым
параметром слой принимает значение alpha,
которое управляет наклоном функции для
отрицательных значений. Вторым параметром
можно передать словарь аргументов слоя
**kwargs, например, имя слоя или
тип данных.
Функция активации ELU определяется следующим
образом: если входное значение больше нуля,
возвращается само значение; если меньше нуля,
возвращается alpha, умноженное на
экспоненту от входного значения минус единица.
Это позволяет сгладить переход и избежать
проблемы затухающих градиентов.
Синтаксис
tf.keras.layers.ELU(alpha=1.0, **kwargs)
Пример
Давайте создадим слой ELU и применим его к тензору, содержащему положительные и отрицательные числа:
import tensorflow as tf
layer = tf.keras.layers.ELU(alpha=1.0)
t = tf.constant([-2.0, -1.0, 0.0, 1.0, 2.0])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([-0.86466473 -0.63212055 0. 1. 2. ], shape=(5,), dtype=float32)
Пример
Давайте изменим параметр alpha и
посмотрим, как это повлияет на отрицательные
значения:
import tensorflow as tf
layer = tf.keras.layers.ELU(alpha=0.5)
t = tf.constant([-2.0, -1.0, 0.0, 1.0, 2.0])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([-0.43233237 -0.31606028 0. 1. 2. ], shape=(5,), dtype=float32)
Пример
Давайте используем слой ELU внутри последовательной модели Keras:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(4, input_shape=(3,)),
tf.keras.layers.ELU(alpha=1.0)
])
t = tf.constant([[1.0, 2.0, 3.0]])
res = model(t)
print(res)
Результат выполнения кода:
tf.Tensor([[-1.7435361 1.1649619 1.9553069 1.2418627]], shape=(1, 4), dtype=float32)
Смотрите также
-
класс
ReLU,
который применяет функцию активации ReLU -
класс
LeakyReLU,
который применяет функцию активации LeakyReLU -
класс
PReLU,
который применяет параметрическую функцию активации ReLU -
класс
Activation,
который применяет произвольную функцию активации