Класс PReLU
Класс PReLU представляет собой слой параметрической активации
ReLU (Parametric Rectified Linear Unit). В отличие от обычного ReLU,
который обнуляет все отрицательные значения, PReLU умножает их
на обучаемый коэффициент alpha. Это позволяет сети
адаптивно настраивать наклон для отрицательной области, что
часто улучшает качество обучения. Слой принимает на вход тензор
и применяет поэлементную функцию активации.
Синтаксис
tf.keras.layers.PReLU(alpha_initializer='zeros', alpha_regularizer=None, alpha_constraint=None, shared_axes=None, **kwargs)
Пример
Давайте создадим слой PReLU и применим его к тензору:
import tensorflow as tf
t = tf.constant([-2.0, -1.0, 0.0, 1.0, 2.0])
layer = tf.keras.layers.PReLU()
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([-0. -0. 0. 1. 2.], shape=(5,), dtype=float32)
Пример
Давайте инициализируем параметр alpha значением 0.5
и посмотрим, как изменятся отрицательные значения:
import tensorflow as tf
t = tf.constant([-2.0, -1.0, 0.0, 1.0, 2.0])
layer = tf.keras.layers.PReLU(alpha_initializer=tf.keras.initializers.Constant(0.5))
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([-1. -0.5 0. 1. 2. ], shape=(5,), dtype=float32)
Пример
Давайте создадим модель с использованием слоя PReLU и выведем форму выходного тензора:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(4, input_shape=(3,)),
tf.keras.layers.PReLU()
])
t = tf.constant([[1.0, 2.0, 3.0]])
res = model(t)
print(res.shape)
Результат выполнения кода:
(1, 4)
Смотрите также
-
слой
ReLU,
который обнуляет отрицательные значения -
слой
LeakyReLU,
который использует фиксированный наклон для отрицательных значений -
слой
ELU,
который применяет экспоненциальную активацию -
слой
Activation,
который применяет функцию активации к входу