Tensorflow)为什么'列车输入功能'和'服务输入功能'分开?

时间:2018-06-17 19:42:19

标签: tensorflow lstm

从本文In Tensorflow for serving a model, what does the serving input function supposed to do exactly开始,我发现'服务输入功能'用于告诉模型在导出模型时,用户需要从用户那里获得哪些数据进行预测。 “列车输入功能”将参考列车输入,列车数据将被给出。

但我无法理解为什么这两个功能是分开的。我认为大多数时候,训练数据形状和预测数据形状都是一样的。有没有办法通过“列车输入功能”而不是“服务输入功能”接收预测数据?

我问这个问题是因为我的'列车输入功能'中有一些预处理,但我不能在'服务输入功能'中进行任何数据处理,因为没有给出输入数据。没有预处理时我没有问题,但我需要做的是将我的csv输入数据改为[批量大小x窗口大小x特征数量]。

这是我列车输入和输入功能的一部分:

def generate_input_fn(file_names, mode, skip_header_lines=5, batch_size = None, windows_size = None):

    column_names=((tf.contrib.timeseries.TrainEvalFeatures.TIMES,)
                + (tf.contrib.timeseries.TrainEvalFeatures.VALUES,) * 32)

    reader = tf.contrib.timeseries.CSVReader(filenames=file_names, 
                                column_names=column_names, 
                                skip_header_lines=skip_header_lines)

    input_fn = tf.contrib.timeseries.RandomWindowInputFn(
        reader, 
        batch_size=batch_size, 
        window_size=windows_size,
    )
    return input_fn



train_input = generate_input_fn(
    hparams.train_files,
    mode = tf.estimator.ModeKeys.TRAIN,
    batch_size=hparams.train_batch_size
)

我是Tensorflow的新手,所以如果我出错了,请调整它。

PS。关于如何处理多变量时间序列数据的任何建议??

1 个答案:

答案 0 :(得分:0)

我发现自己在某些情况下可能希望使用不同的过程来训练数据和预测数据。 您可能只想将特征值用于训练数据,而您想使用其他值而不是特征。

例如,当您使用3个特征值(身高,体重,性别)进行训练时,您想要为预测添加一个人的名字,从而使数据具有4个特征(名称,身高,体重,性别)。 / p>

或者您可能希望拥有不同形状的数据,例如使用csv训练数据,使用json预测数据。 这就是为什么(训练)输入功能和服务输入功能分开的原因。