Spec-Zone.ru › TensorFlow

tf.nn.dropout

Вычисляет дропаут: случайным образом обнуляет элементы, чтобы предотвратить переобучение.

tf.nn.dropout(
    x, rate, noise_shape=None, seed=None, name=None
)

Используется в ноутбуках

Используется в руководстве
  • Автоматическое переписывание символов API TF 1.x и compat.v1
Предупреждение: Следует рассмотреть использование tf.nn.experimental.stateless_dropout вместо этой функции. Различие между tf.nn.experimental.stateless_dropout и этой функцией аналогично различию между tf.random.stateless_uniform и tf.random.uniform. Подробное описание различных систем генерации псевдослучайных чисел в TF можно найти в руководстве Генерация случайных чисел. Как указано в руководстве, устаревшие состоятельные операции генерации псевдослучайных чисел, такие как tf.random.uniform и tf.nn.dropout, еще не устарели, но их использование крайне не рекомендуется, поскольку их состояние трудно контролировать.
Примечание: Поведение дропаута изменилось между TensorFlow 1.x и 2.x. При преобразовании кода 1.x, пожалуйста, используйте именованные аргументы для обеспечения согласованности поведения.

См. также: tf.keras.layers.Dropout для слоя дропаут.

Дропаут полезен для регуляризации моделей DNN. Элементы входных данных случайным образом устанавливаются в ноль (а остальные элементы масштабируются вверх). Это побуждает каждый узел быть независимо полезным, так как он не может полагаться на выходной сигнал других узлов.

Более точно: с вероятностью rate элементы x устанавливаются в 0. Остальные элементы масштабируются вверх на 1.0 / (1 - rate), чтобы сохранить ожидаемое значение.

tf.random.set_seed(0)
x = tf.ones([3,5])
tf.nn.dropout(x, rate = 0.5, seed = 1).numpy()
array([[2., 0., 0., 2., 2.],
     [2., 2., 2., 2., 2.],
     [2., 0., 2., 0., 2.]], dtype=float32)
tf.random.set_seed(0)
x = tf.ones([3,5])
tf.nn.dropout(x, rate = 0.8, seed = 1).numpy()
array([[0., 0., 0., 5., 5.],
     [0., 5., 0., 5., 0.],
     [5., 0., 5., 0., 5.]], dtype=float32)
tf.nn.dropout(x, rate = 0.0) == x
<tf.Tensor: shape=(3, 5), dtype=bool, numpy=
  array([[ True,  True,  True,  True,  True],
         [ True,  True,  True,  True,  True],
         [ True,  True,  True,  True,  True]])>

По умолчанию каждый элемент сохраняется или удаляется независимо. Если noise_shape указан, он должен быть совместим с операциями вещания с формой x, и только измерения с noise_shape[i] == shape(x)[i] будут принимать независимые решения. Это полезно для удаления целых каналов из изображения или последовательности. Например:

tf.random.set_seed(0)
x = tf.ones([3,10])
tf.nn.dropout(x, rate = 2/3, noise_shape=[1,10], seed=1).numpy()
array([[0., 0., 0., 3., 3., 0., 3., 3., 3., 0.],
     [0., 0., 0., 3., 3., 0., 3., 3., 3., 0.],
     [0., 0., 0., 3., 3., 0., 3., 3., 3., 0.]], dtype=float32)
Аргументы
x Тензор с плавающей точкой.
rate Скаляр Tensor с тем же типом, что и x. Вероятность того, что каждый элемент будет удален. Например, установка rate=0.1 приведет к удалению 10% элементов входных данных.
noise_shape Целочисленный тензор 1-D Tensor, представляющий форму для случайной генерации флагов сохранения/удаления.
seed Целое число Python. Используется для создания случайных семян. См. tf.random.set_seed для поведения.
name Имя этой операции (необязательно).
Возвращаемое значение
Тензор с такой же формой, как и x.
Исключения
ValueError Если rate не находится в [0, 1) или если x не является тензором с плавающей точкой. rate=1 запрещено, так как выход будет состоять только из нулей, что, вероятно, не соответствует намерениям.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/nn/dropout

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API