2017-10-18 5 views
0

Kerasを使用してLSTMネットワークを構築しようとしています。 私の時系列の例は、サイズが492です。そして、前の例を3で使用して、次の例を予測したいと思います。したがって、入力はサイズ(num_samples,3*492)に変換され、出力サイズは(num_samples,492)になります。ケラス付きLSTMの寸法誤差

this blogによると、私はまず、フォームのに私のデータサイズを変換(num_samples、タイムステップ、機能)以下

#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) 

とは

#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)) 

しかしLSTMネットワークを構築するために私のコードですこのプロセスでエラーが発生しました。

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

誰でもkn何が問題なのですか?

ご意見やご提案は大歓迎です。以下は

model.summary()

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

答えて

0

の結果は、あなたのLSTMコードにreturn_sequencesを追加です:

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

を私が試したが、それでも –

+0

申し訳ありません私の悪い@Paddy同じエラーを得た、行く、答えをチェック今働く – Paddy