我能够使用keras成功地训练我的有状态LSTM。我的批处理大小为60,并且我在网络中发送的每个输入都可以被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整除,但是我得到了错误:
谁能告诉我上面有什么问题吗?我很困惑,尝试了很多事情,但没有任何帮助。
最佳答案
我怀疑该错误的原因是您没有在model.predict
中指定批处理大小。如您在“预测”部分的documentation中所见,默认参数为
model.predict(self, x, batch_size=32, verbose=0)
这就是为什么32条出现在您的错误消息中的原因。因此,您需要在
batch_size=60
中指定model.predict
。关于tensorflow - 由于batch_size问题,有状态LSTM无法预测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45103692/