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