2017-10-18 2 views
0

J'essaye de construire un réseau LSTM en utilisant Keras. Mon exemple de série temporelle est de taille 492. Et je veux utiliser les exemples précédents 3 pour prédire l'exemple suivant. Ainsi, l'entrée est convertie en taille (num_samples,3*492) et la taille de sortie est (num_samples,492).Erreur de dimension de construction LSTM avec keras

Selon this blog, je tout d'abord convertir ma taille de données dans la forme (num_samples, Timesteps, caractéristiques)

#convert trainning data to 3D LSTM shape 
train_origin_x = train_origin_x.reshape((train_origin_x.shape[0],3,492)) 
test_origin_x = test_origin_x.reshape((test_origin_x.shape[0],3,492)) 
print(train_origin_x.shape,test_origin_x.shape) 
(216, 3, 492) (93, 3, 492) 
print(train_origin_y,test_origin_y) 
(216, 492) (93, 492) 

Et ci-dessous est le mon code pour construire le réseau LSTM

#building network 
model = Sequential() 
model.add(LSTM(hidden_units,return_sequences=True,input_shape=(train_origin_x.shape[1],train_origin_x.shape[2]))) 
model.add(Dense(492)) 
model.compile(loss='mse',optimizer='adam') 
print('model trainning begins...') 
history = model.fit(train_origin_x,train_origin_y,epochs = num_epochs,batch_size = num_batchs, 
      validation_data=(test_origin_x,test_origin_y)) 

Cependant J'ai eu une erreur dans le processus, en disant

ValueError: Error when checking target: expected dense_1 to have 3 dimensions, but got array with shape (216, 492) 

Toute personne Doit quel est le problème?

Tous les commentaires ou suggestions sont les bienvenus et appréciés !!

Ci-dessous est le résultat de model.summary()

model.summary() 
_________________________________________________________________ 
Layer (type)     Output Shape    Param # 
================================================================= 
lstm_1 (LSTM)    (None, 3, 50)    108600  
_________________________________________________________________ 
dense_1 (Dense)    (None, 3, 492)   25092  
================================================================= 

Répondre

0

ajouter return_sequences à votre code LSTM:

model.add(LSTM(hidden_units, return_sequences = False,input_shape=(train_origin_x.shape[1],train_origin_x.shape[2]))) 
+0

J'ai essayé, mais toujours eu la même erreur @Paddy –

+0

désolé mon mauvais, cochez la réponse, va travailler maintenant – Paddy