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

时间:2017-07-20 07:49:38

标签: tensorflow tensorflow-serving

问题

  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用于服务。

    但是,我不知道他们的输出的差异。是变量.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: how to save/restore a model?这让我感到更加困惑。

    模型目录中有4个文件:

    1. graph.pbtxt
    2. model.ckpt-number.data-00000-的-00001
    3. model.ckpt-number.meta
    4. model.ckpt-number.index
    5. 文件2和4存储变量的权重。文件3存储图表。然后1商店是什么?

    6. 如何将Saver的输出转换为SavedModelBuilder。我有检查点目录,并希望导出模型以进行服务。根据{{​​3}}

    7. 应该是这样的

      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用于构建器。

      我是对的吗?

1 个答案:

答案 0 :(得分:1)

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

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

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