Реализация нейронной сети по принципу 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