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