TypeError:不支持的操作数类型为 %:“int”和“NoneType”(有状态 LSTM Keras)

数据挖掘 深度学习 喀拉斯 lstm 顺序
2022-03-09 02:50:16

所以我有一个训练有素的 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)
0个回答
没有发现任何回复~