【问题标题】:Relationship between tensorflow saver, exporter and save modeltensorflow saver、exporter、save model的关系
【发布时间】:2017-07-20 07:49:38
【问题描述】:

问题

  1. Tensorflow Saver、Exporter、SavedModelBuilder 都可以用来保存模型。根据 https://stackoverflow.com/questions/41740101/tensorflow-difference-between-saving-model-via-exporter-and-tf-train-write-graphtensor flow serving,我知道 Saver 用于保存训练检查点,Exporter 和 SavedModelBuilder 用于服务。

    但是,我不知道他们输出的差异。是variable.data-???-of--??? SavedModelBuilder 生成的 variable.index 文件与 cpkt-xxx.index 和 cpkt-xxx.data-???-of-??? 相同由 Saver 生成?

  2. 我还是对tensorflow的model files的含义感到困惑。我读过http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/Tensorflow: how to save/restore a model?,这让我感到更加困惑。

    模型目录下有4个文件:

    1. graph.pbtxt
    2. model.ckpt-number.data-00000-of-00001
    3. model.ckpt-number.meta
    4. model.ckpt-number.index

    文件 2 和 4 存储变量的权重。文件 3 存储图形。那么1存储什么?

  3. 如何将 Saver 的输出转换为 SavedModelBuilder。我有检查点目录并想导出模型以供服务。根据https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python/saved_model

应该是这样的

export_dir = ...
...
builder = tf.saved_model.builder.SavedModelBuilder(export_dir)
with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph_and_variables(sess,
                                       [tf.saved_model.tag_constants.TRAINING],
                                       signature_def_map=foo_signatures,
                                       assets_collection=foo_assets)
...
with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph(["bar-tag", "baz-tag"])
...
builder.save()

所以,我首先需要加载检查点:

saver = tf.train.import_meta_graph('model-number.meta')
saver.restore(sess, tf.train.latest_checkpoint('./'))

然后将这个sess 用于构建器。

我说的对吗?

【问题讨论】:

    标签: tensorflow tensorflow-serving


    【解决方案1】:

    SavedModel 是用于服务的格式,通过 SavedModelBuilder 创建。最佳实践是让您的训练代码调用 SavedModelBuilder,并将生成的输出文件提供给 TF-Serving。如果您这样做,则无需了解生成的文件的详细信息:)

    [1] 中的文档讨论了 SavedModel 目录中文件的结构。

    [1]https://www.tensorflow.org/programmers_guide/saved_model

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2017-01-24
      • 2014-09-28
      • 2023-03-15
      相关资源
      最近更新 更多