相关疑难解决方法(0)

TensorFlow从文件保存到/加载图形

从我到目前为止收集的内容来看,有几种不同的方法可以将TensorFlow图转储到文件中,然后将其加载到另一个程序中,但我无法找到有关它们如何工作的明确示例/信息.我已经知道的是:

  1. 使用a将模型的变量保存到检查点文件(.ckpt)中,tf.train.Saver()然后将其恢复(源代码)
  2. 将模型保存到.pb文件中并使用tf.train.write_graph()tf.import_graph_def()()加载回来
  3. 从.pb文件加载模型,重新训练并使用Bazel将其转储到新的.pb文件中(源代码)
  4. 冻结图形以将图形和权重保存在一起()
  5. 使用as_graph_def()保存模型,并为权重/变量,它们映射到常数()

但是,我无法澄清有关这些不同方法的几个问题:

  1. 关于检查点文件,他们只保存模型的训练权重吗?可以将检查点文件加载到新程序中,并用于运行模型,还是仅仅用作在特定时间/阶段将权重保存在模型中的方法?
  2. 关于tf.train.write_graph(),是否也保存了权重/变量?
  3. 关于Bazel,它是否只能从.pb文件中保存/加载以进行再培训?有一个简单的Bazel命令只是为了将图形转储到.pb中吗?
  4. 关于冻结,可以使用冻结图加载tf.import_graph_def()吗?
  5. TensorFlow的Android演示从.pb文件加载Google的Inception模型.如果我想替换我自己的.pb文件,我该怎么做呢?我需要更改任何本机代码/方法吗?
  6. 一般来说,所有这些方法之间究竟有什么区别?或者更广泛地说,/.as_graph_def()keeppt/.pb有什么区别?

简而言之,我正在寻找的方法是将图形(如,各种操作等)及其权重/变量保存到文件中,然后可以将其用于将图形和权重加载到另一个程序中,使用(不一定继续/再培训).

关于这个主题的文档不是很简单,所以任何答案/信息将不胜感激.

python protocol-buffers tensorflow

93
推荐指数
1
解决办法
3万
查看次数

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

问题:

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

我对吗?

tensorflow tensorflow-serving

9
推荐指数
1
解决办法
767
查看次数