keras 如何将我的模型的输出提供给输入变量

keras how to feed an input variable with the output of my model

多年来我一直在解决这个问题,我想使用预测 t+0 作为我的输入之一来预测 t+1。 我所发现的只是 运行 一次一步调整我的模型,然后手动将我的最后一个预测插入下一步的输入中 运行...效率不高且无法训练。

我使用 keras 和 tensorflow。感谢您的帮助!

我建议你ChainRegressor/Classifier from sklearn。当您指定此模型时,使用先前的预测作为新拟合的特征在每个步骤中迭代拟合。这是回归任务中的一个例子

import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import *
from tensorflow.keras.models import *
from sklearn.multioutput import RegressorChain

n_sample = 1000
input_size = 20

X = np.random.uniform(0,1, (n_sample,input_size))
y = np.random.uniform(0,1, (n_sample,3)) <=== 3 step forecast

def create_model():
    
    global input_size
    
    model = Sequential([
        Dense(32, activation='relu', input_shape=(input_size,)),
        Dense(1)
    ])

    model.compile(optimizer='Adam', loss='mse')
    input_size += 1 # <== important 
    # increase the input dimension and include the previous predictions in each iteration
    
    return model

model = tf.keras.wrappers.scikit_learn.KerasRegressor(build_fn=create_model, epochs=1, 
                                                       batch_size=256, verbose = 1)
chain = RegressorChain(model, order='random', random_state=42)
chain.fit(X, y)

chain.predict(X).shape