Функция activations.elu
Функция activations.elu применяет экспоненциальную линейную
активацию (Exponential Linear Unit) к переданному тензору.
Первым параметром функция принимает тензор или значение, к которому
нужно применить активацию. Вторым параметром можно передать
коэффициент наклона alpha для отрицательной части функции.
По умолчанию alpha равен 1.0.
Формула функции: для x > 0 результат равен x,
а для x <= 0 результат равен
alpha * (exp(x) - 1). В отличие от relu, функция
elu не обнуляет отрицательные значения, а плавно
приближает их к -alpha, что помогает избежать проблемы
«мертвых» нейронов.
Синтаксис
tf.keras.activations.elu(x, alpha=1.0)
Пример
Давайте применим функцию elu к тензору с положительными
и отрицательными значениями:
import tensorflow as tf
t = tf.constant([-3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0])
res = tf.keras.activations.elu(t)
print(res)
Результат выполнения кода:
tf.Tensor([-0.95021296 -0.86466473 -0.63212055 0. 1. 2. 3. ], shape=(7,), dtype=float32)
Пример
Давайте изменим коэффициент alpha на 2.0,
чтобы увеличить наклон отрицательной части:
import tensorflow as tf
t = tf.constant([-3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0])
res = tf.keras.activations.elu(t, alpha=2.0)
print(res)
Результат выполнения кода:
tf.Tensor([-1.9004259 -1.7293295 -1.2642412 0. 1. 2. 3. ], shape=(7,), dtype=float32)
Пример
Давайте применим функцию elu к двумерному тензору:
import tensorflow as tf
t = tf.constant([[-2.0, -1.0], [1.0, 2.0]])
res = tf.keras.activations.elu(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[-0.86466473 -0.63212055]
[ 1. 2. ]], shape=(2, 2), dtype=float32)
Пример
Давайте используем функцию elu в качестве активации
внутри слоя Dense:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(4, activation=tf.keras.activations.elu, input_shape=(3,))
])
t = tf.constant([[1.0, 2.0, 3.0]])
res = model(t)
print(res)
Результат выполнения кода:
tf.Tensor([[-1.1475315 -1.1672854 1.0773582 1.0612087]], shape=(1, 4), dtype=float32)
Смотрите также
-
функцию
relu,
которая обнуляет отрицательные значения -
функцию
selu,
которая выполняет масштабированную экспоненциальную линейную активацию -
функцию
leaky_relu,
которая пропускает малую часть отрицательных значений -
функцию
silu,
которая применяет сигмоидно-линейную активацию