【问题标题】:tensorflow difference between saving model via exporter and tf.train.write_graph()?通过导出器和 tf.train.write_graph() 保存模型之间的张量流差异?
【发布时间】:2017-06-04 01:15:23
【问题描述】:

保存模型有什么区别

  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)

问题继续TensorFlow saving into/loading a graph from a file

【问题讨论】:

    标签: python tensorflow protocol-buffers


    【解决方案1】:

    鉴于 Exporter 现在已正式弃用,用于保存图形和数据的新协议是使用 Saver。这是一个带有示例代码的优秀博客:https://blog.metaflow.fr/tensorflow-how-to-freeze-a-model-and-serve-it-with-a-python-api-d4f3596b3adc。

    【讨论】:

      【解决方案2】:

      在您训练模型并希望为其提供服务(将其用于推理)之后使用导出器。

      Saver 用于在训练模型时设置检查点。

      【讨论】:

      • 这与使用 FreezeGraph 为推理准备冻结图有何不同?换句话说,如果使用freeze_graph(),是否需要使用Exporter?
      • 并在 TF1.0+ 上进行了更改,因为我现在在 Exporter 上看到的文档很少。
      • 例如,最新的警告信息(TF1.1)是这样写的:WARNING:tensorflow:From <ipython-input-34-eebd3eb6cfc5>:17: generic_signature (from tensorflow.contrib.session_bundle.exporter) is deprecated and will be removed after 2017-06-30. Instructions for updating: Please use SavedModel instead.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 2018-07-10
      相关资源
      最近更新 更多