将参数传递给 GCMLE 预测图

Pass Parameter to GCMLE Prediction Graph

关于我的 ML 引擎预测图,我有一部分图需要很长时间才能计算并且并不总是必要的。有没有办法创建一个布尔标志来跳过图表的这一部分?我想在创建批量预测作业或在线预测时传递此标志。例如,它将是这样的:

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

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

我知道我可以为批次中的每个元素向预测请求添加一个新的输入字段 True/False 并且当我不想获得预测时将其作为 False 传递,但是我很好奇是否有一种方法可以只用一个参数来做到这一点。

这目前是不可能的。我们希望详细了解您对此功能的要求。请通过 cloudml-feedback@google.com

联系我们

如何添加两个不同的导出签名,每个签名都有不同的头部?然后你可以部署到两个不同的端点?选择要调用的 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)