代码之家  ›  专栏  ›  技术社区  ›  reese0106

将参数传递到gcmle预测图

  •  0
  • reese0106  · 技术社区  · 7 年前

    对于我的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传递,但是我想知道是否有一种方法可以只用一个参数来实现这一点。

    2 回复  |  直到 7 年前
        1
  •  0
  •   rhaertel80    7 年前

    目前这是不可能的。我们想听听你对这个功能的要求。请通过cloudml-feedback@google.com联系我们

        2
  •  0
  •   Lak    7 年前

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

    编写两个服务输入函数,每种情况一个。在第一种情况下,将标志设置为零,在第二种情况下,将标志设置为一。使用“一”和“零”的原因是为了确保有一批“零”和“一”:

    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_和_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)
    
    推荐文章