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
多年来我一直在解决这个问题,我想使用预测 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