我正在实现tfx管道,类似于芝加哥出租车示例
推入模型的预测返回{"predictions": []}
。
如何调试此问题?
我可以看到所做预测的日志。但是因为它返回一个空数组,所以状态码为200,并且没有关于出错原因的有用信息。我希望预测请求数据没有正确传递给估算器。
芝加哥示例将其用作服务接收者,并且可以正常工作。我认为它也适用于我的示例
def _example_serving_receiver_fn(transform_output, schema):
"""Build the serving in inputs.
Args:
transform_output: directory in which the tf-transform model was written
during the preprocessing step.
schema: the schema of the input data.
Returns:
Tensorflow graph which parses examples, applying tf-transform to them.
"""
raw_feature_spec = _get_raw_feature_spec(schema)
raw_feature_spec.pop(_LABEL_KEY)
raw_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
raw_feature_spec, default_batch_size=None)
serving_input_receiver = raw_input_fn()
transformed_features = transform_output.transform_raw_features(
serving_input_receiver.features)
return tf.estimator.export.ServingInputReceiver(
transformed_features, serving_input_receiver.receiver_tensors)
主要区别在于,我只希望输入1个:用'|': 'java|python'
分隔的一串编程语言。
然后我在预处理函数中将该字符串分割开,并使其成为形状为500的多个热编码数组(我正好有500个选项)
也可能是tf转换未正确转换预测的情况。 (tf转换是tfx管道的一部分,可以正常运行)
请求:{"instances": ["javascript|python"]}
响应:{"predictions": []}
预期的响应:{"predictions": [520]}
(其为回归模型)