Класс AlphaDropout
Класс AlphaDropout реализует технику регуляризации, известную как
альфа-дропаут. В отличие от стандартного дропаута, который случайным
образом обнуляет часть нейронов, альфа-дропаут сохраняет среднее
значение и дисперсию входных данных, что особенно важно для
самонормализующихся нейронных сетей. Слой наследуется от базового
класса Layer и принимает первым параметром число от 0
до 1 - долю нейронов, которые будут отключены во время
обучения. Вторым параметром можно передать начальное значение
для генератора случайных чисел.
Синтаксис
tf.keras.layers.AlphaDropout(rate, [seed])
Пример
Давайте создадим слой альфа-дропаута с долей отключения
0.5 и применим его к тензору:
import tensorflow as tf
tf.random.set_seed(0)
dropout = tf.keras.layers.AlphaDropout(rate=0.5)
t = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0])
res = dropout(t, training=True)
print(res)
Результат выполнения кода:
tf.Tensor([...], shape=(5,), dtype=float32)
Пример
Давайте применим слой альфа-дропаута в режиме предсказания, когда отключение нейронов не происходит:
import tensorflow as tf
tf.random.set_seed(0)
dropout = tf.keras.layers.AlphaDropout(rate=0.5)
t = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0])
res = dropout(t, training=False)
print(res)
Результат выполнения кода:
tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float32)
Пример
Давайте создадим модель с двумя слоями Dense и слоем
AlphaDropout между ними:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.AlphaDropout(rate=0.3),
tf.keras.layers.Dense(10)
])
t = tf.constant([[1.0, 2.0, 3.0, 4.0, 5.0]])
res = model(t, training=True)
print(res.shape)
Результат выполнения кода:
(1, 10)
Смотрите также
-
слой
Dropout,
который выполняет стандартную регуляризацию -
слой
GaussianDropout,
который добавляет гауссов шум к входным данным -
слой
GaussianNoise,
который добавляет шум к входным данным -
слой
BatchNormalization,
который нормализует входные данные