Выключение части нейронов в TensorFlow
Выключение части нейронов -
случайная доля ячеек на каждом
шаге обнуляется, оставшиеся
масштабируются так, чтобы средний
уровень сигнала не падал. В Keras
это класс Dropout. При создании
задают долю отключаемых ячеек.
Вне режима обучения слой Dropout
сам не обнуляет числа: на входе
и выходе остаются одни и те же
значения. Чтобы увидеть эффект
до сборки сети, при вызове слоя
указывают режим обучения.
Создадим слой с долей 0.5,
зададим фиксированный seed,
сравним ответ в режиме обучения
и без него:
import tensorflow as tf
tf.random.set_seed(42)
row = tf.constant([[1.0, 2.0, 3.0, 4.0]])
layer = tf.keras.layers.Dropout(0.5)
print(layer(row, training=True))
print(layer(row, training=False))
Тот же слой работает с таблицей партии. Часть ячеек станет нулём, соседние в той же строке могут увеличиться:
import tensorflow as tf
tf.random.set_seed(0)
table = tf.constant([[10.0, 20.0], [30.0, 40.0]])
layer = tf.keras.layers.Dropout(0.5)
print(layer(table, training=True))
Соберите строку партии
[[2.0, 4.0, 6.0, 8.0]].
Включите режим обучения и выведите
ответ слоя с долей отключения
0.5.
Для ряда [[1.0, 2.0, 3.0]]
выведите результат слоя с долей
0.5 без режима обучения
и исходный ряд.
Создайте таблицу [[1.0, 1.0],
[1.0, 1.0]] с осью партии.
При доле отключения 0.5
и включённом режиме обучения
выведите ответ.