或者说我的ML引擎预测图,我有一部分图需要花费很长的时间来计算,而且并不总是必需的。有没有一种方法可以创建一个布尔标志来跳过图的这一部分?创建批量预测作业或在线预测时,我想传递此标志。例如,将是这样:
gcloud ml-engine predict --model $MODEL --version $VERSION --json-instance $JSON_INSTANCES --boolean_flag $BOOLEAN_FLAG
在上面的示例中,我将True / False传递为$BOOLEAN_FLAG
,然后这将确定是否评估了预测图的一部分。我想像这个标志也可以在批处理预测作业的主体中传递,就像模型/版本一样。这有可能吗?
我知道我可以在预测请求中为批次中的每个元素添加一个为True / False的新输入字段,并在我不想获取预测时将其作为False传递,但是我很好奇如果有办法只用一个参数就能做到这一点。
答案 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)