Слой Permute
Слой Permute переставляет оси входного тензора
в соответствии с порядком, переданным в параметре
dims. Первым параметром слой принимает
кортеж или список целых чисел, задающий новое
расположение осей. Нумерация осей начинается с
единицы и не включает ось батча. Слой удобно
использовать, например, для перехода между
форматами channels_last и channels_first.
Синтаксис
tf.keras.layers.Permute(dims, **kwargs)
Пример
Давайте создадим слой Permute, который меняет
местами две оси двумерного тензора:
import tensorflow as tf
t = tf.constant([[[1, 2, 3], [4, 5, 6]]])
layer = tf.keras.layers.Permute((2, 1))
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[1. 4.]
[2. 5.]
[3. 6.]]], shape=(1, 3, 2), dtype=float32)
Пример
Давайте применим слой Permute к тензору
с формой channels_last и получим форму
channels_first:
import tensorflow as tf
t = tf.constant([[[1, 2], [3, 4], [5, 6]]])
layer = tf.keras.layers.Permute((2, 1))
res = layer(t)
print(res.shape)
Результат выполнения кода:
(1, 2, 3)
Пример
Давайте переставим три оси трёхмерного тензора в обратном порядке:
import tensorflow as tf
t = tf.constant([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]])
layer = tf.keras.layers.Permute((3, 1, 2))
res = layer(t)
print(res.shape)
Результат выполнения кода:
(1, 2, 2, 2)
Пример
Давайте встроим слой Permute в модель
Sequential и применим его к данным:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Permute((2, 1))
])
t = tf.constant([[[1, 2, 3], [4, 5, 6]]])
res = model(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[1. 4.]
[2. 5.]
[3. 6.]]], shape=(1, 3, 2), dtype=float32)
Смотрите также
-
слой
Reshape,
который изменяет форму тензора без перестановки данных -
слой
Flatten,
который разворачивает многомерный тензор в вектор -
слой
RepeatVector,
который повторяет вектор заданное число раз -
слой
Input,
который создает входной тензор для модели