Tensorflow:外生特征键在StructuralEnsembleRegressor预测调用上引发KeyError

时间:2018-01-19 07:11:09

标签: time-series tensorflow-estimator

我有一个用于时间序列预测的tensorflow实现。我的数据包含异构功能,我在列车输入中提供它们并评估输入。在预测步骤predict_continuation_input_fn中,我的外生特征列引发了KeyError。这是我的代码的简化版本:

features = (ex_0, ex_1, ex_2)
reader = tf.contrib.timeseries.CSVReader(
  _DATA_FILE,
  column_names=(tf.contrib.timeseries.TrainEvalFeatures.TIMES, tf.contrib.timeseries.TrainEvalFeatures.VALUES) + features,
  column_dtypes=(tf.int64,tf.float32,tf.float32,tf.float32,tf.float32),
  skip_header_lines=1)

estimator = tf.contrib.timeseries.StructuralEnsembleRegressor(
  periodicities=[20],
  num_features=1,
  exogenous_feature_columns= [tf.contrib.layers.real_valued_column(column_name=f, dimension=1) for f in features])

train_input_fn=tf.contrib.timeseries.RandomWindowInputFn(reader, batch_size=4, window_size=100)
estimator.train(input_fn=train_input_fn, steps=20)

evaluation_input_fn = tf.contrib.timeseries.WholeDatasetInputFn(reader)
evaluation = estimator.evaluate(input_fn=evaluation_input_fn, steps=1)

predict_input_fn = tf.contrib.timeseries.predict_continuation_input_fn(
      evaluation, steps=100)
(predictions,) = tuple(estimator.predict(input_fn=predict_input_fn))

此时我收到错误KeyError: 'ex_0'。错误很明显,因为生成的evaluation变量不包含我的外生特征。 predict_continuation_input_fn有争论得到exogenous_features,但我找不到任何关于如何将外生数据从评估中提供给该论点的文档。

我应该如何为预测提供这些功能?我的实施有缺陷吗?建议非常受欢迎。

1 个答案:

答案 0 :(得分:0)

您可能已经知道了,但如果没有,则需要提供与将来的预测时间窗口相对应的额外外部功能(即与您提供的用于训练和评估的功能不同)。

请参见此处的示例:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/timeseries/examples/known_anomaly.py#L126

相关问题