2016-11-07 34 views
3

我正在運行tf.contrib.learn TensorFlow服務中的寬和深模型並導出訓練好的模型我是使用一段代碼無法保存tf.contrib.learn在張量流會話中的寬和深模型,並將其服務於TensorFlow服務

with tf.Session() as sess: 
     init_op = tf.initialize_all_variables() 
     saver = tf.train.Saver() 
     m.fit(input_fn=lambda: input_fn(df_train), steps=FLAGS.train_steps) 
     print('model successfully fit!!') 
     results = m.evaluate(input_fn=lambda: input_fn(df_test), steps=1) 
     for key in sorted(results): 
     print("%s: %s" % (key, results[key])) 
     model_exporter = exporter.Exporter(saver) 
     model_exporter.init(
     sess.graph.as_graph_def(), 
     init_op=init_op, 
     named_graph_signatures={ 
      'inputs': exporter.generic_signature({'input':df_train}), 
      'outputs': exporter.generic_signature({'output':df_train[impressionflag]})}) 
     model_exporter.export(export_path, tf.constant(FLAGS.export_version), sess) 
     print ('Done exporting!') 

但是在使用該命令saver = tf.train.Saver()錯誤ValueError: No variable to save is displayed enter image description here

我怎樣才能節省模式,使一個可投放的創建這是必需的,而裝載在tensorflow導出模型標準服務器?任何幫助表示讚賞。

+0

您是否先嚐試sess.run(init_op)?你的圖表還有別的嗎? – drpng

+0

是的,我嘗試使用sess.run(init_op),但是我仍然面臨同樣的問題。 – Vasanti

+0

你能打印更多的信息[這裏](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/saver.py#L1016),並與你期望的相比較嗎?您可能想嘗試稍後實例化保存程序。 – drpng

回答

1

的圖表和會話中包含的估算和不便於暴露或泄露。因此,通過使用Estimator.export(),我們可以導出模型並創建可用於在model_servers上運行的servable。

0

你的圖表是否有變量呢?如果不是,所有的操作與常量工作,而不是,你可以在包裹constructor指定一個標誌:
saver = tf.train.Saver(allow_empty=True)

1

Estimator.export()現已被棄用,因此您需要使用Estimator.export_savedmodel()

這裏我寫了一個簡單的教程Exporting and Serving a TensorFlow Wide & Deep Model

TL; DR

要導出的估計有四步:

  1. 定義功能,貨物出口的估計初始化期間使用的所有功能的列表。

  2. 使用create_feature_spec_for_parsing創建功能配置。

  3. 建立一個serving_input_fn適合使用服務使用input_fn_utils.build_parsing_serving_input_fn

  4. 使用export_savedmodel()導出模型。

要正常運行客戶端腳本,你需要做以下三個步驟:

  1. 創建和某個地方你的腳本可在/服務/文件夾,例如/ serving/tensorflow_serving/example/

  2. 通過添加py_binary來創建或修改相應的BUILD文件。

  3. 構建並運行模型服務器,例如tensorflow_model_server

  4. 創建,構建並運行一個客戶端,該客戶端向我們的tensorflow_model_server發送一個tf.Example用於推斷。

欲瞭解更多詳情請看教程本身。

希望它有幫助。