【发布时间】:2020-07-03 19:47:22
【问题描述】:
我在这个问题上转了几年,我想使用预测 t+0 作为我的输入之一来预测 t+1。 我发现的只是一次运行我的模型,然后手动将我的最后一个预测插入到下一步运行的输入中......效率不高且无法训练。
我使用带有张量流的 keras。感谢您的帮助!
【问题讨论】:
标签: tensorflow keras keras-layer tf.keras
我在这个问题上转了几年,我想使用预测 t+0 作为我的输入之一来预测 t+1。 我发现的只是一次运行我的模型,然后手动将我的最后一个预测插入到下一步运行的输入中......效率不高且无法训练。
我使用带有张量流的 keras。感谢您的帮助!
【问题讨论】:
标签: tensorflow keras keras-layer tf.keras
我建议你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
【讨论】: