Реализация нейронной сети по принципу many-to-maty

Прошу помочь! Начинаю разбираться с рекуррентными нейронными сетями. Застрял на сети по архитектуре many-to-many. Из того что я нашел, понял что нужен некий аналог энкодера. Т.е. первая часть преобразует последовательность в вектор, после этот вектор отправляется в декодер, который вектор преобразует в последовательность.

input_shape=(None, 1)
model_input = Input(shape=input_shape)
rnn = LSTM(20,  return_sequences=False)(model_input)
dense = Dense(10,activation='tanh')(rnn)


input_shape2=(1, 10)
model_input2 = Input(shape=input_shape2)
rnn2 = LSTM(20,  return_sequences=True)(model_input2)
dense2 = Dense(1,activation='sigmoid')(rnn2)

encoder = keras.Model(model_input, dense, name="encoder")
decoder = keras.Model(model_input2, dense2, name="decoder")

model = keras.Model(model_input, decoder(encoder(model_input)), name="autoencoder")

model.compile(optimizer='adam', loss='binary_crossentropy')

В таком формате получаю ошибку несовпадения размерностей. Объясните подробно пожалуйста, что я делаю не так! Заранее спасибо.

ValueError: Exception encountered when calling layer "decoder" (type Functional).

Input 0 of layer "lstm_27" is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: (None, 10)

Call arguments received by layer "decoder" (type Functional):
  • inputs=tf.Tensor(shape=(None, 10), dtype=float32)
  • training=None
  • mask=None

Ответы (0 шт):