RepeatVector в Keras

В ряде случаев для того,чтобы подать 2D данные на вход слоя принимающего 3D данные необходимо их скопировать. Например, такая необходимость есть при создании seq2seq модели с attention в Keras. Это можно сделать с помощью Lambda слоя, но в Keras есть слой RepeatVector.

Слой RepeatVector добавляет размерность к датасету. Например, если входной shape (batch size, input size) и нужно скормить его GRU слою, то можно использовать слой RepeatVector для преобразования входных данных в shape с размерностью (batch size, sequence length, input size).

В примере ниже определена модель, которая повторяет фиксированное количество раз (6) поданные входные данные.

from tensorflow.keras.layers import Input, RepeatVector
from tensorflow.keras.models import Model
import numpy as np

inp = Input(shape=(2,))
# Define a RepeatVector that repeats the input 6 times
rep = RepeatVector(6)(inp)
model = Model(inputs=inp, outputs=rep)
#Входные данные
x = np.array([[0,1],[2,3]])
#Получаем ответ модели
y = model.predict(x)
print('x.shape = ',x.shape)
print(x)
print('y.shape = ',y.shape)
print(y)
x.shape =  (2, 2) 
[[0 1]
 [2 3]]

y.shape =  (2, 6, 2)
[[[0. 1.]
  [0. 1.]
  [0. 1.]
  [0. 1.]
  [0. 1.]
  [0. 1.]]
 [[2. 3.]
  [2. 3.]
  [2. 3.]
  [2. 3.]
  [2. 3.]
  [2. 3.]]]
Spread the love
Запись опубликована в рубрике Нейронные сети с метками , . Добавьте в закладки постоянную ссылку.

Обсуждение закрыто.