2

シカゴのタクシーの例と同様に、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 の複数の 1 つのホット エンコードされた配列にします (正確に 500 のオプションがあります)。

また、予測が tf 変換によって正しく変換されていない場合もあります。(tf 変換は tfx パイプラインの一部であり、正しく実行されます)

リクエスト:{"instances": ["javascript|python"]}

応答:{"predictions": []}

予想される応答: {"predictions": [520]}(その回帰モデル)

4

0 に答える 0