Spec-Zone.ru › TensorFlow 2.4

tf.nn.dropout

Просмотреть исходный код на GitHub

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

tf.nn.dropout(
    x, rate, noise_shape=None, seed=None, name=None
)
Примечание: Поведение дропаута изменилось между TensorFlow 1.x и 2.x. При конвертации кода 1.x используйте именованные аргументы, чтобы поведение оставалось неизменным.

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

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

Более точно: с вероятностью rate элементы x обнуляются. Остальные элементы масштабируются на 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 Одномерный Tensor типа int32, представляющий форму для случайных флагов сохранения/отбрасывания.
seed Целое число Python. Используется для создания случайных семян. См. tf.random.set_seed для поведения.
name Имя для этой операции (необязательно).
Возвращаемое значение
Тензор той же формы, что и x.
Исключения
ValueError Если rate не находится в [0, 1) или если x не является числовым тензором с плавающей запятой. rate=1 запрещено, потому что выход будет состоять только из нулей, что, вероятно, не является желаемым результатом.

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

Spec-Zone.ru

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