所以我有一个训练有素的 LSTM 模型,我试图用它来预测未来的值。该模型是有状态的,如下所示
model = Sequential()
model.add(GRU(units=50,batch_size=1, input_shape=(None, 1),stateful=True, return_sequences=True))
model.add(Activation('tanh'))
model.add(GRU(units=50,stateful=True,return_sequences=True))
model.add(Dropout(.1))
model.add(GRU(1, return_sequences=True,stateful=True))
model.add(Lambda(lambda x: x * 1.0012))
model.load_weights("weights.h5")
model.compile(loss='mse', optimizer='adam')
当我尝试预测整个数据,然后在循环中通过它来预测未来的值时,我得到了标题错误。仅当设置了步骤时才会发生这种情况。
如果我使用 batch_size 设置步骤,它会告诉我将 batch_size 设置为 None,如果这样做,我会收到上述错误。很奇怪。这里发生了什么?如果我不设置步骤并将批处理设置为可被样本数整除的任何 int,它也将起作用。
下面是预测代码:
model.reset_states()
predictions = model.predict(entire_data,batch_size=1)
futureElement = predictions[:,-1:,:]
futureElements = []
forecast1 = []
futureElements.append(futureElement)
for i in range(time):
futureElement = model.predict(futureElement,batch_size=None,steps=60)
forecast1.append(futureElement)