实验中的出口策略是什么?

时间:2017-08-11 19:26:32

标签: python machine-learning tensorflow

我尝试在Tensorflow中构建我的自定义实验,但我不明白export_strategy参数的用途是什么?而且,你如何建立serve_input_fn?

谢谢!

1 个答案:

答案 0 :(得分:1)

CloudML example

启发的答案

问题1 :export_strategy(source)的用途是什么?

另请参阅问题二的回答,但导出策略(顾名思义)可以在导出时对图形进行一些更改。在下面的示例中,添加了在为模型提供服务时将使用的正确输入函数。

  learn_runner.run(
      generate_experiment_fn(
          min_eval_frequency=args.min_eval_frequency,
          eval_delay_secs=args.eval_delay_secs,
          train_steps=args.train_steps,
          eval_steps=args.eval_steps,
          export_strategies=[saved_model_export_utils.make_export_strategy(
              model.SERVING_FUNCTIONS[args.export_format],
              exports_to_keep=1
          )]
      ),
      run_config=tf.contrib.learn.RunConfig(model_dir=args.job_dir),
      hparams=hparam.HParams(**args.__dict__)
  )

问题2 :如何构建serving_input_fn(source)?

这实际上做的是当您保存模型并准备服务时,您将需要根据所需的输入(在这种情况下为json,csv,...)来显示图形的一些输入。对图表的输入,如果缺少这些图表,则在提供图表时无法提供图表。

def csv_serving_input_fn():
  """Build the serving inputs."""
  csv_row = tf.placeholder(
      shape=[None],
      dtype=tf.string
  )
  features = parse_csv(csv_row)
  # Ignore label column
  features.pop(LABEL_COLUMN)
  return tf.estimator.export.ServingInputReceiver(
      features, {'csv_row': csv_row})
def example_serving_input_fn():
  """Build the serving inputs."""
  example_bytestring = tf.placeholder(
      shape=[None],
      dtype=tf.string,
  )
  features = tf.parse_example(
      example_bytestring,
      tf.feature_column.make_parse_example_spec(INPUT_COLUMNS)
  )
  return tf.estimator.export.ServingInputReceiver(
      features, {'example_proto': example_bytestring})


def json_serving_input_fn():
  """Build the serving inputs."""
  inputs = {}
  for feat in INPUT_COLUMNS:
    inputs[feat.name] = tf.placeholder(shape=[None], dtype=feat.dtype)
  return tf.estimator.export.ServingInputReceiver(inputs, inputs)


SERVING_FUNCTIONS = {
    'JSON': json_serving_input_fn,
    'EXAMPLE': example_serving_input_fn,
    'CSV': csv_serving_input_fn
}

此问题也与Example of tensorflow.contrib.learn.ExportStrategy

有关