问题:
-
Tensorflow Saver ,Exporter,SavedModelBuilder都可以用于保存模型。根据 https://stackoverflow.com/questions/41740101/tensorflow-difference-between-saving-model-via-exporter-and-tf-train-write-graph 和张量流服务,我知道 Saver 用于保存训练检查点,导出器和 SavedModelBuilder 用于服务。
但是,我不知道它们的输出有何不同。是变量.数据-???-之--???以及由 SavedModelBuilder 生成的变量.索引文件,与 cpkt-xxx.index 和 cpkt-xxx.data 相同-???-之-???由保护程序生成?
-
我仍然对张量流模型文件的含义感到困惑。我已经阅读了 http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/和Tensorflow:如何保存/恢复模型?这让我感到更加困惑。
模型目录中有 4 个文件:
- graph.pbtxt
- model.ckpt-number.data-00000-of-00001
- model.ckpt-number.meta
- model.ckpt-number.index
文件 2 和 4 存储变量的权重。文件 3 存储图形。那么1存储什么?
-
如何将 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
用于构建器。
我说的对吗?
SavedModel是用于服务的格式,通过 SavedModelBuilder 创建。最佳做法是让训练代码调用 SavedModelBuilder,并将生成的输出文件提供给 TF-Serving。如果这样做,则无需了解生成哪些文件的详细信息:)
[1] 中的文档讨论了 SavedModel 目录中文件的结构。
[1] https://www.tensorflow.org/programmers_guide/saved_model