2016-09-02 5 views
0

前の20の値を使って時系列の次の値を予測しようとしています。ここに私のコードのサンプルです:ケラスを使用したLSTMによる時系列予測:次元数が間違っている:予想3、形状が2つある

X_train.shape(15015, 20)

Y_train.shapeである私は自分のコードを実行したときけれども、私は、次のエラーを得た(15015,)

EMB_SIZE = 1 
HIDDEN_RNN = 3 

model = Sequential() 
model.add(LSTM(input_shape = (EMB_SIZE,), input_dim=EMB_SIZE, output_dim=HIDDEN_RNN, return_sequences=True)) 
model.add(LSTM(input_shape = (EMB_SIZE,), input_dim=EMB_SIZE, output_dim=HIDDEN_RNN, return_sequences=False)) 
model.add(Dense(1)) 
model.add(Activation('softmax')) 
model.compile(optimizer='adam', 
       loss='binary_crossentropy', 
       metrics=['accuracy']) 

model.fit(X_train, 
      Y_train, 
      nb_epoch=5, 
      batch_size = 128, 
      verbose=1, 
      validation_split=0.1) 
score = model.evaluate(X_test, Y_test, batch_size=128) 
print score 

さ:

TypeError: ('Bad input argument to theano function with name "/usr/local/lib/python2.7/dist-packages/keras/backend/theano_backend.py:484" at index 0(0-based)', 'Wrong number of dimensions: expected 3, got 2 with shape (32, 20).')

私はこの投稿の結果を複製しようとしていた:neural networks for algorithmic trading。ここにgit repoへのリンクがあります:link

これは概念的なエラーのようです。時系列予測のためのLSTMSのより良い理解を得ることができるソースを投稿してください。また、私はこのエラーを修正する方法を教えてください。そうすれば、上記の記事に記載されている結果を再現することができます。

答えて

0

あなたの問題を正しく理解していれば、入力データは長さ20の15015 1Dシーケンスのセットになります。Keras docによると、入力は形状(nb_samples、timesteps、input_dim)の3​​Dテンソルです。あなたの場合、Xの形状は(15015, 20, 1)になります。

また、最初のLSTMレイヤーにinput_dimとするだけです。 input_shapeは冗長であり、第二の層が自動的に入力された形状を推測します:Kerasで

model = Sequential() 
model.add(LSTM(input_dim=EMB_SIZE, output_dim=HIDDEN_RNN, return_sequences=True)) 
model.add(LSTM(output_dim=HIDDEN_RNN, return_sequences=False)) 
0

LSTMは、あなたの場合は(nb_samples, timesteps, feature_dim)

の入力テンソル形状を有し、X_trainはおそらく(15015, 20, 1)の入力形状を持つべきです。それに応じてそれを変形し、モデルを実行する必要があります。

関連する問題