2017-07-14 24 views
4

ケラスを使用してステートフルLSTMを正常に訓練することができました。私のバッチサイズは60であると私はネットワークに送信していますすべての入力には、以下のBATCH_SIZE で割り切れる私の抜粋です:正常に実行ステートフルLSTMがbatch_sizeの問題によって予測できない

model = Sequential() 
model.add(LSTM(80,input_shape = trainx.shape[1:],batch_input_shape=(60, 
trainx.shape[1], trainx.shape[2]),stateful=True,return_sequences=True)) 
model.add(Dropout(0.15)) 
model.add(LSTM(40,return_sequences=False)) 
model.add(Dense(40)) 
model.add(Dropout(0.3)) 
model.add(Dense(output_dim=1)) 
model.add(Activation("linear")) 
keras.optimizers.RMSprop(lr=0.005, rho=0.9, epsilon=1e-08, decay=0.0) 
model.compile(loss="mse", optimizer="rmsprop") 

マイトレーニングライン:今すぐ

model.fit(trainx[:3000,:],trainy[:3000],validation_split=0.1,shuffle=False,nb_epoch=9,batch_size=60) 

私は予測してみてください再び60で割ることができますが、エラーが発生します。

ValueError: In a stateful network, you should only pass inputs with a number of samples that can be divided by the batch size. Found: 240 samples. Batch size: 32.

誰かが私に何か間違っていると教えてもらえますか?私は混乱して、とても多くのことを試しましたが、何も助けません。

答えて

4

エラーの原因は、model.predictにバッチサイズを指定しなかったことが原因と思われます。あなたは、「予測する」セクションにdocumentationで見ることができるように、デフォルトのパラメータは、あなたのエラーメッセージの理由32が表示されている

model.predict(self, x, batch_size=32, verbose=0) 

です。したがってbatch_size=60model.predictに指定する必要があります。

+0

おかげで、私はそれが訓練されたバッチサイズを覚えておくことがモデルにとって明らかになると思いました – Harshit

関連する問題