通过导出器和 tf.train.write_graph() 保存模型之间的张量流区别?
tensorflow difference between saving model via exporter and tf.train.write_graph()?
保存模型和
有什么区别
- 使用 tensorflow 服务中指定的导出器:
例如:
from tensorflow.contrib.session_bundle import exporter
#from tensorflow_serving.session_bundle import exporter
saver = tf.train.Saver(sharded=True)
model_exporter = exporter.Exporter(saver)
model_exporter.init(
sess.graph.as_graph_def(),
named_graph_signatures={
'inputs': exporter.generic_signature({'images': x}),
'outputs': exporter.generic_signature({'scores': y})})
model_exporter.export(export_path, tf.constant(FLAGS.export_version), sess)
- 直接使用 tf.train.write_graph() 和 tf.train.Saver():
例如:
with sess.graph.as_default():
saver = tf.train.Saver()
saver.save(sess, path, meta_graph_suffix='meta', write_meta_graph=True)
问题是
的延续
Exporter 在您训练模型并想要服务它(用于推理)后使用。
Saver 用于训练模型时的检查点。
鉴于 Exporter 现已正式弃用,保存图形和数据的新协议是使用 Saver。这是一个带有示例代码的优秀博客:https://blog.metaflow.fr/tensorflow-how-to-freeze-a-model-and-serve-it-with-a-python-api-d4f3596b3adc.
保存模型和
有什么区别- 使用 tensorflow 服务中指定的导出器:
例如:
from tensorflow.contrib.session_bundle import exporter
#from tensorflow_serving.session_bundle import exporter
saver = tf.train.Saver(sharded=True)
model_exporter = exporter.Exporter(saver)
model_exporter.init(
sess.graph.as_graph_def(),
named_graph_signatures={
'inputs': exporter.generic_signature({'images': x}),
'outputs': exporter.generic_signature({'scores': y})})
model_exporter.export(export_path, tf.constant(FLAGS.export_version), sess)
- 直接使用 tf.train.write_graph() 和 tf.train.Saver():
例如:
with sess.graph.as_default():
saver = tf.train.Saver()
saver.save(sess, path, meta_graph_suffix='meta', write_meta_graph=True)
问题是
Exporter 在您训练模型并想要服务它(用于推理)后使用。
Saver 用于训练模型时的检查点。
鉴于 Exporter 现已正式弃用,保存图形和数据的新协议是使用 Saver。这是一个带有示例代码的优秀博客:https://blog.metaflow.fr/tensorflow-how-to-freeze-a-model-and-serve-it-with-a-python-api-d4f3596b3adc.