РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
251 of 824 menu

Класс GaussianDropout

Класс GaussianDropout представляет собой регуляризационный слой, который во время обучения умножает входные данные на случайные значения, распределенные по нормальному закону. В отличие от обычного дропаута, который обнуляет часть нейронов, гауссов дропаут добавляет шум, умножая каждое значение на коэффициент из нормального распределения со средним 1 и стандартным отклонением sqrt(rate / (1 - rate)). Первым параметром слой принимает rate - долю шума, которая должна быть меньше 1. Вторым параметром можно передать словарь конфигурации слоя.

Синтаксис

tf.keras.layers.GaussianDropout(rate, **kwargs)

Пример

Давайте создадим слой гауссова дропаута с параметром rate равным 0.2 и применим его к тензору:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.GaussianDropout(0.2) t = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0]) res = layer(t, training=True) print(res)

Результат выполнения кода:

tf.Tensor([1.0969818 2.294094 3.013296 4.1848783 5.284467 ], shape=(5,), dtype=float32)

Пример

Давайте применим слой к двумерному тензору в режиме обучения:

<+python+> import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.GaussianDropout(0.3) t = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) res = layer(t, training=True) print(res) <-python+>

Результат выполнения кода:

tf.Tensor( [[1.1579726 1.6473048 3.3312263] [3.7846403 5.3058076 5.219204 ]], shape=(2, 3), dtype=float32)

Пример

Давайте проверим, что в режиме инференса слой не изменяет входные данные:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.GaussianDropout(0.2) t = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0]) res = layer(t, training=False) print(res)

Результат выполнения кода:

tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float32)

Пример

Давайте встроим слой гауссова дропаута в последовательную модель:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(4, input_shape=(3,)), tf.keras.layers.GaussianDropout(0.2), tf.keras.layers.Dense(2) ]) t = tf.constant([[1.0, 2.0, 3.0]]) res = model(t, training=True) print(res)

Результат выполнения кода:

tf.Tensor([[-0.23780262 0.5179831 ]], shape=(1, 2), dtype=float32)

Смотрите также

  • слой Dropout,
    который обнуляет часть входных данных
  • слой GaussianNoise,
    который добавляет гауссов шум к входным данным
  • слой AlphaDropout,
    который применяет дропаут, сохраняющий среднее и дисперсию
  • слой SpatialDropout2D,
    который выполняет пространственный дропаут для двумерных карт признаков
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить