我有以下Keras模型,虽然它可以使用GRU推广到普通RNN。
model = Sequential()
model.add(GRU(40, batch_input_shape=(batch_size, look_back, 1), stateful=True, return_sequences=True))
model.add(GRU(10, batch_input_shape=(batch_size, look_back, features), stateful=True))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# Train model
iter = 10000
for i in range(iter):
model.fit(trainX, trainY, nb_epoch=1, batch_size=batch_size, verbose=0, shuffle=False)
if (i<(iter-1)):
model.reset_states()
testPred = model.predict(testX,batch_size=batch_size)
print(mean_squared_error(testY,testPred))
如果我没有关于重置状态的if
声明,则均方误差总是更高。考虑到测试集恰好在列车设置之后,您是否有意保留最后一个内存块的状态?
本教程似乎另有建议:http://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-python-keras/(即他根本没有if语句,并没有明确提及保留最后状态的任何内容)。
所以只是想知道我对此是否正确。