J'essaye d'implémenter un autoencoder de débruitage avec une couche de LSTM entre les deux. L'architecture va suivre. Je ne suis pas capable de comprendre comment ma dimension d'entrée devrait être de mettre en œuvre cette architecture?Ajouter une couche dense avant couche LSTM dans keras ou Tensorflow?
J'ai essayé le code suivant
batch_size = 1
model = Sequential()
model.add(Dense(5, input_shape=(1,)))
model.add(Dense(10))
model.add(LSTM(32))
model.add(Dropout(0.3))
model.add(Dense(5))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, nb_epoch=100, batch_size=batch_size, verbose=2)
Mon trainX est [650,20,1] vecteur. Il s'agit d'une série de données chronologiques avec une seule caractéristique.
J'obtiens l'erreur suivante
ValueError Traceback (most recent call last)
<ipython-input-20-1248a33f6518> in <module>()
3 model.add(Dense(5, input_shape=(1,)))
4 model.add(Dense(10))
----> 5 model.add(LSTM(32))
6 model.add(Dropout(0.3))
7 model.add(Dense(5))
/usr/local/lib/python2.7/dist-packages/keras/models.pyc in add(self, layer)
330 output_shapes=[self.outputs[0]._keras_shape])
331 else:
--> 332 output_tensor = layer(self.outputs[0])
333 if isinstance(output_tensor, list):
334 raise TypeError('All layers in a Sequential model '
/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in __call__(self, x, mask)
527 # Raise exceptions in case the input is not compatible
528 # with the input_spec specified in the layer constructor.
--> 529 self.assert_input_compatibility(x)
530
531 # Collect input shapes to build layer.
/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in assert_input_compatibility(self, input)
467 self.name + ': expected ndim=' +
468 str(spec.ndim) + ', found ndim=' +
--> 469 str(K.ndim(x)))
470 if spec.dtype is not None:
471 if K.dtype(x) != spec.dtype:
ValueError: Input 0 is incompatible with layer lstm_10: expected ndim=3, found ndim=2
Voulez-vous appliquer un 'Dense' à chaque pas de temps? –
Juste pour clarifier, j'essaye de mettre en application l'architecture du papier suivant. http://www1.icsi.berkeley.edu/~vinyals/Files/rnn_denoise_2012.pdf. Il suffit de remplacer la couche RNN par une cellule LSTM. –
Dans ce cas, la réponse de Nassim est correcte. –