通过导出器和 tf.train.write_graph() 保存模型之间的张量流区别?

tensorflow difference between saving model via exporter and tf.train.write_graph()?

保存模型和

有什么区别
  1. 使用 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) 
  1. 直接使用 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.