# tf.compat.v1.layers.flatten

<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#L481-L550) |

Flattens an input tensor while preserving the batch axis (axis 0).

    tf.compat.v1.layers.flatten(
        inputs, name=None, data_format='channels_last'
    )

<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.Flatten`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/keras/layers/Flatten).

#### Structural Mapping to Native TF2

None of the supported arguments have changed name.

Before:

     y = tf.compat.v1.layers.flatten(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.Flatten()(x)
     model = tf.keras.Model(x, y)

<br />

<br />

## Description

<br />

<br />

<br />

| ## Args ||
|---|---|
| `inputs` | Tensor input. |
| `name` | The name of the layer (string). |
| `data_format` | A string, one of `channels_last` (default) or `channels_first`. The ordering of the dimensions in the inputs. `channels_last` corresponds to inputs with shape `(batch, height, width, channels)` while `channels_first` corresponds to inputs with shape `(batch, channels, height, width)`. |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| Reshaped tensor. ||

<br />

#### Examples:

      x = tf.compat.v1.placeholder(shape=(None, 4, 4), dtype='float32')
      y = flatten(x)
      # now `y` has shape `(None, 16)`

      x = tf.compat.v1.placeholder(shape=(None, 3, None), dtype='float32')
      y = flatten(x)
      # now `y` has shape `(None, None)`