将参数传递到GCMLE预测图

时间:2018-06-29 13:55:33

标签: google-cloud-platform google-cloud-ml

或者说我的ML引擎预测图,我有一部分图需要花费很长的时间来计算,而且并不总是必需的。有没有一种方法可以创建一个布尔标志来跳过图的这一部分?创建批量预测作业或在线预测时,我想传递此标志。例如,将是这样:

gcloud ml-engine predict --model $MODEL --version $VERSION --json-instance $JSON_INSTANCES --boolean_flag $BOOLEAN_FLAG

在上面的示例中,我将True / False传递为$BOOLEAN_FLAG,然后这将确定是否评估了预测图的一部分。我想像这个标志也可以在批处理预测作业的主体中传递,就像模型/版本一样。这有可能吗?

我知道我可以在预测请求中为批次中的每个元素添加一个为True / False的新输入字段,并在我不想获取预测时将其作为False传递,但是我很好奇如果有办法只用一个参数就能做到这一点。

2 个答案:

答案 0 :(得分:0)

目前无法实现。我们想了解更多有关您对此功能的要求。请通过cloudml-feedback@google.com与我们联系

答案 1 :(得分:0)

如何添加两个不同的输出签名,每个签名具有不同的头部?然后可以部署到两个不同的端点?选择要调用的URL,具体取决于您要输入全部还是部分。

编写两个服务输入功能,每种情况一个。在第一种情况下,将标志设置为零,在第二种情况下,将标志设置为一。使用ones_like和zeros_like的原因是为了确保您拥有一批零和一:

def case1_serving_input_fn():
    feature_placeholders = ...
    features = ...
    features['myflag'] = tf.zeros_like(features['other'])
    return tf.estimator.export.ServingInputReceiver(features, feature_placeholders)

def case2_serving_input_fn():
    feature_placeholders = ...
    features = ...
    features['myflag'] = tf.ones_like(features['other'])
    return tf.estimator.export.ServingInputReceiver(features, feature_placeholders)

在train_and_evaluate函数中,有两个导出器:

def train_and_evaluate(output_dir, nsteps):
  ...
  exporter1 = tf.estimator.LatestExporter('case1', case1_serving_input_fn)
  exporter2 = tf.estimator.LatestExporter('case2', case2_serving_input_fn)
  eval_spec=tf.estimator.EvalSpec(
                       input_fn = make_input_fn(eval_df, 1),
                       exporters = [exporter1, exporter2] )
  tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)