2016-11-07 35 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用于推断。

欲了解更多详情请看教程本身。

希望它有帮助。