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