TensorFlow 将图保存到文件中/从文件中加载图

2024-01-27

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

  1. 使用以下命令将模型的变量保存到检查点文件 (.ckpt) 中tf.train.Saver()并稍后恢复它们(source https://www.tensorflow.org/versions/r0.10/how_tos/variables/index.html)
  2. 将模型保存到 .pb 文件中并使用时将其加载回来tf.train.write_graph() and tf.import_graph_def() (source https://github.com/tensorflow/tensorflow/issues/616)
  3. 从 .pb 文件加载模型,重新训练它,然后使用 Bazel 将其转储到新的 .pb 文件中(source https://petewarden.com/2016/02/28/tensorflow-for-poets/)
  4. 冻结图形以将图形和权重保存在一起(source https://www.tensorflow.org/versions/r0.9/how_tos/tool_developers/index.html#freezing)
  5. Use as_graph_def()保存模型,对于权重/变量,将它们映射到常量(source https://stackoverflow.com/questions/34343259/is-there-an-example-on-how-to-generate-protobuf-files-holding-trained-tensorflow)

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

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

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

有关此主题的文档不是很简单,因此我们将不胜感激任何答案/信息。


有很多方法可以解决在 TensorFlow 中保存模型的问题,这可能会让人有点困惑。依次回答每个子问题:

  1. 检查点文件(例如通过调用生成saver.save() https://www.tensorflow.org/api_docs/python/tf/train/Saver#save on a tf.train.Saver https://www.tensorflow.org/api_docs/python/tf/train/Saver对象)仅包含权重以及同一程序中定义的任何其他变量。要在另一个程序中使用它们,您必须重新创建关联的图形结构(例如,通过运行代码来再次构建它,或者调用tf.import_graph_def() https://www.tensorflow.org/api_docs/python/tf/import_graph_def),它告诉 TensorFlow 如何处理这些权重。请注意,调用saver.save()还生成一个文件,其中包含MetaGraphDef https://www.tensorflow.org/api_guides/python/meta_graph,其中包含一个图表以及如何将检查点的权重与该图表关联的详细信息。看教程 https://www.tensorflow.org/api_guides/python/meta_graph更多细节。

  2. tf.train.write_graph() https://www.tensorflow.org/api_docs/python/tf/train/write_graph只写图结构;不是重量。

  3. Bazel 与阅读或编写 TensorFlow 图无关。 (也许我误解了你的问题:请随时在评论中澄清。)

  4. 可以使用以下方式加载冻结图tf.import_graph_def() https://www.tensorflow.org/api_docs/python/tf/import_graph_def。在这种情况下,权重(通常)嵌入到图中,因此您不需要加载单独的检查点。

  5. 主要的变化是更新输入到模型中的张量的名称以及从模型中获取的张量的名称。在 TensorFlow Android 演示中,这对应于inputName and outputName传递给的字符串TensorFlowClassifier.initializeTensorFlow() https://github.com/tensorflow/tensorflow/blob/d67ce6c449fabb3bebccd85815d9d291f114e6e4/tensorflow/examples/android/src/org/tensorflow/demo/TensorFlowClassifier.java#L34.

  6. The GraphDef是程序结构,通常在训练过程中不会改变。检查点是训练过程状态的快照,通常在训练过程的每一步都会发生变化。因此,TensorFlow 对这些类型的数据使用不同的存储格式,并且低级 API 提供了不同的方法来保存和加载它们。更高级别的库,例如MetaGraphDef https://www.tensorflow.org/api_guides/python/meta_graph图书馆,Keras https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model, and skflow https://github.com/tensorflow/skflow#saving--restoring-models建立在这些机制的基础上,提供更方便的方法来保存和恢复整个模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow 将图保存到文件中/从文件中加载图 的相关文章

随机推荐

  • 帮助菜单缺失部分 - Eclipse Luna

    我正在 Eclipse Luna 中工作 安装 Oracle Enterprise Pack for Eclipse OEPE 后 帮助菜单显示缺少项目 我附上屏幕截图 丢失物品 另外 我检查了菜单可见性 检查更新 安装新软件 安装细节 等
  • mypy 设置字典键/接口

    假设我有一个以字典作为参数的函数 def f d dict gt None x d x print x 我可以指定这本词典吗must有钥匙 x 到我的 我正在寻找类似的东西打字稿的界面 https www typescriptlang or
  • 如何在 Eclipse CDT 中配置特定的 GCC 交叉工具链?

    我导入了一些源代码C Makefile Project到 Eclipse CDT 工作区 并指定Cross GCC 索引器设置 工具链 项目导入进展顺利 但包含路径设置仅指向我当前的本机主机 GCC 实现 我一直在寻找Toolchain E
  • JavaScript:如何将额外参数传递给回调[重复]

    这个问题在这里已经有答案了 我有一个问题困扰了我一段时间 假设我有以下数组 var array 1 2 3 现在我有一个与此类似的功能 function print num str console log str num 是否可以调用 fo
  • Net Core 2.1 通用主机即服务

    我正在尝试使用最新的 Dotnet Core 2 1 运行时构建 Windows 服务 我不托管任何 aspnet 我不希望或不需要它来响应 http 请求 我遵循了示例中的代码 https github com aspnet Docs t
  • 我可以在 ARView 中使用缩放功能吗?

    我希望我的用户在 AR 应用程序中使用缩放 可以使用 ARView 进行缩放吗 我编写了以下代码并将其添加到点击操作中 let discoverySession AVCaptureDevice DiscoverySession device
  • 如何在 R 中使用 `tryCatch` 正确记录警告和错误?

    我有一个函数fun通常会产生警告 偶尔会引发错误 我正在尝试使用tryCatch记录警告和错误 如建议的那样这个答案 https stackoverflow com a 57658252 5252007 如何同时存储警告和错误 这是一个最小
  • gdb:如何列出打开的文件

    我想知道是否有可能获得调试应用程序已打开但未从 GDB 本身关闭的文件 目录列表 目前我设置了一个断点 然后使用外部程序 例如lsof检查打开的文件 但这种做法确实很烦人 环境 Debian Lenny 和 gdb v6 8 EDIT 我这
  • 在 Kubernetes 上使用 Spring Boot Admin 监控副本

    我在 Kubernetes 上设置了一个 Spring Boot 管理客户端 并扩展到 3 个副本 但是当我尝试检查实例时 管理服务器只显示一个 为了让 SBA Spring Boot 管理员 了解您的服务的三个实例是不同的 您需要确保每个
  • 为什么 C# 中的构造函数不被继承?

    我猜想 C 继承中有一些非常基本的东西我不明白 有人请启发我吗 有时 在子类化时 您希望限制创建类实例所需的条件 让我举一个例子 如果类确实继承了其超类构造函数 则所有类都将具有来自的无参数构造函数Object 显然这是不正确的
  • R下载文件重定向

    您好 我正在参加在线课程并尝试下载rda教授提供的数据集 我尝试运行与课程中提供的完全相同的命令 download file https dl dropbox com u 7710864 courseraPublic samsungData
  • 如何有效地搜索这个层次结构?

    我有一个如下所示的数据结构 public class Node public string Code get set public string Description get set public List
  • 错误“无法下载,$GOPATH 未设置。”

    Setup 看看我的配置 echo GOPATH ls r GOPATH home cyrus go src pkg bin echo GOROOT ls GOROOT usr local go api AUTHORS bin CONTRI
  • 使用 PHP 进行错误级别分析

    我不是编码员 但我确实理解逻辑 通常我能够使用 PHP 进行简单的编码 我正在寻求实施错误级别分析使用 PHP 你可以看到一个例子这个链接 http fotoforensics com 是否可以使用 ImageMagick 或 GD 来实现
  • PHP mail() 附件问题

    有人能帮我弄清楚为什么这总是返回错误吗 to email protected cdn cgi l email protection from Website lt email protected cdn cgi l email protec
  • Java / Kotlin / Spring Boot。如何在异常发生时自动获取参数值?

    考虑到我们正在使用Kotlin Spring Boot 注释等相关库 如果我们的代码抛出异常 我们如何在异常发生时自动检索方法参数值 我们可以使用 AOP Spring 拦截器或其他技术来做到这一点吗 我们希望用它来丰富我们的错误消息 以便
  • 如何处理 Pandas 中的SettingWithCopyWarning

    背景 我刚刚将 Pandas 从 0 11 升级到 0 13 0rc1 现在 该应用程序弹出了许多新的警告 其中之一是这样的 E FinReporter FM EXT py 449 SettingWithCopyWarning A valu
  • Android OAuth 改造访问令牌请求

    谁能告诉我将以下代码转换为改造的确切格式 curl X POST d grant type password username admin password admin scope read write u clientId clientS
  • 为第 3 方插件设置模板优先级

    自 Shopware 6 4 13 0 以来有一个新功能 您可以在其中设置getTemplatePriority 在捆绑包类中影响模板加载顺序 目前 我们有一个有序列表 其中列出了我们希望如何加载插件并设置installed at日期 它包
  • TensorFlow 将图保存到文件中/从文件中加载图

    从我到目前为止收集到的信息来看 有几种不同的方法可以将 TensorFlow 图转储到文件中 然后将其加载到另一个程序中 但我还没有找到关于它们如何工作的明确示例 信息 我已经知道的是 使用以下命令将模型的变量保存到检查点文件 ckpt 中