Класс Flatten
Класс Flatten применяется к данным для преобразования
многомерного тензора в одномерный вектор. Слой принимает
на вход тензор произвольной размерности и разворачивает все
измерения, кроме первого (размера батча), в одно. Первым
параметром можно передать настройки слоя, вторым - имя слоя.
Слой часто используется для перехода от сверточных или
рекуррентных слоев к полносвязным.
Синтаксис
tf.keras.layers.Flatten(data_format=None, **kwargs)
Пример
Давайте создадим слой Flatten и применим его
к двумерному тензору:
import tensorflow as tf
layer = tf.keras.layers.Flatten()
t = tf.constant([[1, 2, 3], [4, 5, 6]])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[1. 2. 3. 4. 5. 6.]], shape=(1, 6), dtype=float32)
Пример
Давайте применим слой Flatten к трехмерному тензору
с размером батча 2:
import tensorflow as tf
layer = tf.keras.layers.Flatten()
t = tf.constant([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[1. 2. 3. 4.]
[5. 6. 7. 8.]], shape=(2, 4), dtype=float32)
Пример
Давайте используем слой Flatten внутри модели
Keras после сверточного слоя:
Результат выполнения кода:
"Model: \"sequential\"
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 6, 6, 8) 80
flatten (Flatten) (None, 288) 0
dense (Dense) (None, 4) 1156
=================================================================
Total params: 1236 (4.83 KB)
Trainable params: 1236 (4.83 KB)
Non-trainable params: 0 (0.00 Byte)"
Пример
Давайте узнаем форму тензора до и после применения
слоя Flatten:
import tensorflow as tf
layer = tf.keras.layers.Flatten()
t = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
res = layer(t)
print("before:", t.shape)
print("after:", res.shape)
Результат выполнения кода:
before: (2, 2, 2)
after: (2, 4)