张量流保护程序,导出程序和保存模型之间的关系

lio*_*nel 9 tensorflow tensorflow-serving

问题:

  1. Tensorflow Saver,Exporter,SavedModelBuilder都可以用于保存模型.根据 /sf/ask/2921807101/张量流服务,我知道Saver用于保存训练检查点和Exporter和SavedModelBuilder用于服务.

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

  2. 我仍然对tensorflow的模型文件的含义感到困惑.我读过http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/Tensorflow:如何保存/恢复模式?这让我感到更加困惑.

    模型目录中有4个文件:

    1. graph.pbtxt
    2. model.ckpt-number.data 00000-的-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()
Run Code Online (Sandbox Code Playgroud)

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

saver = tf.train.import_meta_graph('model-number.meta')
saver.restore(sess, tf.train.latest_checkpoint('./'))
Run Code Online (Sandbox Code Playgroud)

然后将其sess用于构建器.

我对吗?

Chr*_*ton 1

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

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

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