2017-05-15 9 views
2

私はクラウドMLエンジンのオンライン予測サービスで使用するモデルを開発しています。私のモデルには予測の重要性のしきい値を保持するために使用するテンソルplaceholder_with_defaultが含まれています。プレースホルダのテンソルは、mlエンジンの予測値ですが、ローカル予測は必要ありません。

threshold = tf.placeholder_with_default(0.01, shape=(), name="threshold") 

私は地元の使用時に予測することに気付きました:私はこのテンソルの値を指定する

gcloud ml-engine local predict --json-instances=data.json --model-dir=/my/model/dir 

必要はありません。例えば

gcloud ml-engine predict --model my_model --version v1 --json-instances data.json 

を私は上記のJSONを使用している場合、私はエラーを取得:予測オンライン使用している場合しかし

{"features": ["a", "b"], "values": [10, 5]} 

:しかし

{ 
    "error": "Prediction failed: Exception during model execution: AbortionError(code=StatusCode.INVALID_ARGUMENT, details=\"input size does not match signature\")" 
} 

Iがしきい値を含む場合に、これは有効な入力ですそれから私はしません。例:

{"features": ["a", "b"], "values": [10, 5], "threshold": 0.01} 

「しきい値」をオプションの入力にする方法はありますか?

答えて

0

がどのように見える

おかげ

マシューは、現在、それはCloudMLでは不可能です。 JSONファイルから予測を取得する場合は、("threshold": 0.01のように)明示的にデフォルト値を追加する必要があります。 Pythonで

私は、動的APIリクエストを行う前に必要な属性を追加している:

def add_empty_fields(instance): 
    placeholder_defaults = {"str_placeholder": "", "float_placeholder": -1.0} 
    for ph, default_val in placeholder_defaults.items(): 
     if ph not in instance: 
      instance[ph] = default_val 

値をプレースホルダプレースホルダ名をマップinstance辞書を変異させることになります。オプションのプレースホルダが多数あるモデルの場合、各インスタンスのプレースホルダの値を手動で設定するよりも、少し面白いです。

関連する問題