在用于服务模型的Tensorflow中,服务输入函数应该做什么

Vah*_*deh 5 python tensorflow tensorflow-serving google-cloud-ml

因此,我一直在努力了解在Tensorflow中为训练模型导出训练模型时,serve_input_fn()的主要任务是什么.网上有一些例子可以解释它,但是我在为自己定义它时遇到了问题.

我试图解决的问题是回归问题,我有29个输入和一个输出.是否有用于为其创建相应服务输入功能的模板?如果我使用一类分类问题该怎么办?我的服务输入功能是否需要更改或者我可以使用相同的功能吗?

最后,我是否总是需要提供输入功能,还是仅当我使用tf.estimator导出我的模型时?

Lak*_*Lak 8

如果您希望模型能够进行预测,则需要服务输入功能.serving_input_fn指定predict()方法的调用者必须提供的内容.您基本上是在告诉模型它必须从用户那里获得哪些数据.

如果您有29个输入,则您的服务输入功能可能如下所示:

def serving_input_fn():
    feature_placeholders = {
      'var1' : tf.placeholder(tf.float32, [None]),
      'var2' : tf.placeholder(tf.float32, [None]),
      ...
    }
    features = {
        key: tf.expand_dims(tensor, -1)
        for key, tensor in feature_placeholders.items()
    }
    return tf.estimator.export.ServingInputReceiver(features, 
                                                    feature_placeholders)
Run Code Online (Sandbox Code Playgroud)

这通常以JSON形式出现:

{"instances": [{"var1": [23, 34], "var2": [...], ...}]}
Run Code Online (Sandbox Code Playgroud)

PS输出不是服务输入函数的一部分,因为这是关于预测的输入.如果您使用的是预先制作的估算器,则输出已经预先确定.如果您正在编写自定义估算器,则需要编写导出签名.