首页 > 解决方案 > 如何保存有状态的张量流 keras 模型的状态?

问题描述

我正在尝试编写一种新方法来分析时间序列预测的预测。因此,我需要在每个时间戳(预测的)处复制我的学习模型,或者将其重置为前一个点,并为其提供不同的输入。

我用:

我的网络:

model = Sequential()
model.add(GRU(100, return_sequences=True, stateful=True, batch_size=batchSize, input_shape=(x, y)))
model.add(Dropout(dropout))
model.add(GRU(units, return_sequences=False, stateful=True))
model.add(Dropout(dropout))
model.add(Dense(1, activation="linear", kernel_constraint=min_max_norm(min_value=-10)))
model.compile(loss='mean_squared_error', optimizer='nadam', metrics=['accuracy'])

目前唯一有效的是,从头开始预测前面的步骤:

for i in range(timestamps):
    for j, features in enumerate(featuresTable[i]):
        if i > 0:
            model.predict(np.reshape(featuresList[:i], (i, 1, featuresList.shape[1])),
                                              batch_size=self.batch_size)
        predict = model.predict(np.reshape(features, (1, 1, len(features))), batch_size=self.batch_size)
        model.reset_states()                

其中 timestamps是时间戳的数量,featuresTable是包含每个时间戳的替代特征的表格,并且featuresList是正常特征

我想要的是:

state = getState(model)
for i in range(timestamps):
    for j, features in enumerate(featuresTable[i]):
        predict = model.predict(np.reshape(features, (1, 1, len(features))), batch_size=self.batch_size)
        setState(model,state)
    model.predict(np.reshape(featuresList[i], (1, 1, featuresList.shape[1])), batch_size=self.batch_size)
    state = getState(model)           

提前谢谢你~ Lifree

标签: pythonpython-3.xtensorflowkeras

解决方案


推荐阅读