# tf.keras.layers.Permute

<br />

|---|---|
| [![](https://www.tensorflow.org/images/tf_logo_32px.png) TensorFlow 1 version](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/keras/layers/Permute) | [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.0.0/tensorflow/python/keras/layers/core.py#L480-L534) |

Permutes the dimensions of the input according to a given pattern.

Inherits From: [`Layer`](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/layers/Layer)

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.keras.layers.Permute`](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Permute)

<br />

    tf.keras.layers.Permute(
        dims, **kwargs
    )

Useful for e.g. connecting RNNs and convnets together.

#### Example:

    model = Sequential()
    model.add(Permute((2, 1), input_shape=(10, 64)))
    # now: model.output_shape == (None, 64, 10)
    # note: `None` is the batch dimension

<br />

<br />

<br />

| ## Arguments ||
|---|---|
| `dims` | Tuple of integers. Permutation pattern, does not include the samples dimension. Indexing starts at 1. For instance, `(2, 1)` permutes the first and second dimensions of the input. |

<br />

#### Input shape:

Arbitrary. Use the keyword argument `input_shape`
(tuple of integers, does not include the samples axis)
when using this layer as the first layer in a model.

#### Output shape:

Same as the input shape, but with the dimensions re-ordered according
to the specified pattern.