tf.nn.dropout
Вычисляет dropout: случайным образом устанавливает элементы в ноль, чтобы предотвратить переобучение.
tf.nn.dropout(
x, rate, noise_shape=None, seed=None, name=None
)
Используется в блокнотах
| Используется в руководстве |
|---|
Примечание: Поведение dropout изменилось между TensorFlow 1.x и 2.x. При преобразовании кода 1.x используйте именованные аргументы, чтобы обеспечить согласованность поведения.
См. также: tf.keras.layers.Dropout — слой dropout.
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 | Целочисленный Tensor размерности 1, задающий форму случайно генерируемых флагов сохранения/отбрасывания. |
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