# tf.compat.v1.layers.dropout

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/keras-team/keras/tree/v2.13.1/keras/legacy_tf_layers/core.py#L346-L422) |

Applies Dropout to the input.

    tf.compat.v1.layers.dropout(
        inputs, rate=0.5, noise_shape=None, seed=None, training=False, name=None
    )

<br />

## Migrate to TF2

<br />

> [!CAUTION]
> **Caution:** This API was designed for TensorFlow v1. Continue reading for details on how to migrate from this API to a native TensorFlow v2 equivalent. See the [TensorFlow v1 to TensorFlow v2 migration guide](https://www.tensorflow.org/guide/migrate) for instructions on how to migrate the rest of your code.

This API is a legacy api that is only compatible with eager execution and
[`tf.function`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/function) if you combine it with
[`tf.compat.v1.keras.utils.track_tf1_style_variables`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/compat/v1/keras/utils/track_tf1_style_variables)

Please refer to [tf.layers model mapping section of the migration guide](https://www.tensorflow.org/guide/migrate/model_mapping)
to learn how to use your TensorFlow v1 model in TF2 with Keras.

The corresponding TensorFlow v2 layer is [`tf.keras.layers.Dropout`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/keras/layers/Dropout).

#### Structural Mapping to Native TF2

None of the supported arguments have changed name.

Before:

     y = tf.compat.v1.layers.dropout(x)

After:

To migrate code using TF1 functional layers use the [Keras Functional API](https://www.tensorflow.org/guide/keras/functional):

     x = tf.keras.Input((28, 28, 1))
     y = tf.keras.layers.Dropout()(x)
     model = tf.keras.Model(x, y)

<br />

<br />

## Description

Dropout consists in randomly setting a fraction `rate` of input units to 0
at each update during training time, which helps prevent overfitting.
The units that are kept are scaled by `1 / (1 - rate)`, so that their
sum is unchanged at training time and inference time.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `inputs` | Tensor input. |
| `rate` | The dropout rate, between 0 and 1. E.g. "rate=0.1" would drop out 10% of input units. |
| `noise_shape` | 1D tensor of type `int32` representing the shape of the binary dropout mask that will be multiplied with the input. For instance, if your inputs have shape `(batch_size, timesteps, features)`, and you want the dropout mask to be the same for all timesteps, you can use `noise_shape=[batch_size, 1, features]`. |
| `seed` | A Python integer. Used to create random seeds. See [`tf.compat.v1.set_random_seed`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/compat/v1/set_random_seed) for behavior. |
| `training` | Either a Python boolean, or a TensorFlow boolean scalar tensor (e.g. a placeholder). Whether to return the output in training mode (apply dropout) or in inference mode (return the input untouched). |
| `name` | The name of the layer (string). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| Output tensor. ||

<br />

<br />

<br />

<br />

| ## Raises ||
|---|---|
| `ValueError` | if eager execution is enabled. |

<br />