2017-05-15 2 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\")" 
} 

내가 임계 값을 포함하는 경우를이 유효한 입력 그렇다면 나는 그렇지 않습니다. 예 :

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

"임계 값"을 입력으로 사용할 수있는 방법이 있습니까?

답변

0

의 모습

감사

마태 복음 현재는 CloudML에 수 없습니다. JSON 파일에서 예측을 얻으려면 (예 : "threshold": 0.01처럼) 명시 적으로 기본값을 추가해야합니다.

는 파이썬에서 난 그냥 동적 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 DICT를 변이 것이다. 선택적 placeholder가 많은 모델의 경우 각 인스턴스에 대해 누락 된 자리 표시 자 값을 수동으로 설정하는 것보다 약간 더 멋지다.