Передать параметр в граф прогнозирования GCMLE - PullRequest
0 голосов
/ 29 июня 2018

Что касается моего графика прогнозирования движка 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 голосов
/ 30 июня 2018

Как насчет добавления двух разных экспортных подписей, каждая с разной головой? Тогда вы можете развернуть на двух разных конечных точках? Выберите 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)
0 голосов
/ 29 июня 2018

В настоящее время это невозможно. Мы хотели бы узнать больше о ваших требованиях к этой функции. Пожалуйста, свяжитесь с нами по адресу cloudml-feedback@google.com

...