2017-08-11 78 views

回答

0

答案靈感來自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

+0

感謝您的答覆。在tf.estimator.EstimatorSpec中,有export_outputs參數。你知道它與export_strat有什麼關係嗎?簡而言之,導出模型有什麼用處? –

+0

當您使用Google雲端ML(參考https://cloud.google.com/ml-engine/docs/how-tos/getting-started-training-prediction)時,最明顯的使用案例可能會用到'訓練'工作,在你訓練模型的地方,訓練好的模型被存儲起來,稍後將被用來'服務'模型。 –

+0

非常感謝你! 最後一個問題,你有什麼想法,爲什麼以下serving_fn工作時使用? _feature_spec = { 「輸出」:tf.placeholder(D型= tf.float32,形狀= [1,無])} serving_input_fn = tf.estimator.export.build_raw_serving_input_receiver_fn(feature_spec) 然後,使用 learn.Experiment( ... ...參數 export_strategies = saved_model_export_utils.make_export_strategy(serving_input_fn = serving_input_fn) )_ –

相關問題