将元数据添加到tensorflow freeze graph pb

2024-02-18

为了分享我们训练有素的张量流网络,我们将图冻结成.pb文件。我们还创建一个包含一些元数据的 xml 文件,例如输入张量和输出张量、要应用的预处理类型、训练数据信息等。然后使用 Java 或 C# 通过加载图形和评估张量等来提供模型。

为了使共享更容易,我想将此 xml 数据包含在.pb文件。有什么办法可以做到这一点吗?一种想法是将其作为 tf.Constant,但我不知道如何将其连接到普通图。

注意这是使用freeze_graph.py。新的SavedModel格式是否更合适?


首先,是的,您应该使用新的 SavedModel 格式,因为它是 TF 团队今后将支持的格式,并且也可以与 Keras 配合使用。您可以向模型添加一个额外的端点,该端点返回一个带有 XML 数据字符串的常量张量(如您所提到的)。

这很好,因为它是封闭的——底层的保存模型格式并不重要,因为您的元数据保存在计算图中本身。

请看这个问题的答案:使用自定义签名定义保存 TF2 keras 模型 https://stackoverflow.com/questions/56659949/saving-a-tf2-keras-model-with-custom-signature-defs。这个答案并不能让你 100% 理解 Keras,因为它不能与 tf.keras.models.load 函数很好地互操作,因为它们将其包装在一个tf.Module。幸运的是,使用tf.keras.Model如果添加 tf.function 装饰器,在 TF2 中也能正常工作:

class MyModel(tf.keras.Model):

  def __init__(self, metadata, **kwargs):
    super(MyModel, self).__init__(**kwargs)
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
    self.metadata = tf.constant(metadata)

  def call(self, inputs):
    x = self.dense1(inputs)
    return self.dense2(x)

  @tf.function(input_signature=[])
  def get_metadata(self):
    return self.metadata

model = MyModel('metadata_test')
input_arr = tf.random.uniform((5, 5, 1)) # This call is needed so Keras knows its input shape. You could define manually too
outputs = model(input_arr)

然后您可以保存并加载模型,如下所示:

tf.keras.models.save_model(model, 'test_model_keras')
model_loaded = tf.keras.models.load_model('test_model_keras')

最后使用model_loaded.get_metadata()检索您的常量元数据张量。

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

将元数据添加到tensorflow freeze graph pb 的相关文章

随机推荐

  • 带箭头的 PHP 正则表达式 (>>)

    我的正则表达式需要一些帮助 这是我所得到的 function formatLink post if preg match gt gt 0 9 post return font color post font else return font
  • 在 Python Discord Bot 中按名称而不是 ID 将消息发送到特定文本通道

    是否有与 client get channel ID 等效的命令 允许您将消息发送到专门命名的文本通道 我的项目是一个报告系统 它将在所有员工都可以看到的员工聊天中打印报告 我希望它可以跨多个服务器工作 因此不能选择使用 ID 因为所有服务
  • Xamarin.UITest DeviceAgentException:无法安装 DeviceAgent

    如何解决在 iOS 设备上运行 Xamarin UITest 时出现的此错误 它发生在 iOS 模拟器和物理 iOS 设备上 设置 Calabash XDB Core Exceptions DeviceAgentException 无法安装
  • Django:在模板中显示带有前缀的表单名称

    我已经四处寻找答案一段时间了 但没有成功 我基本上想获取包含前缀的表单字段的名称 有谁知道如何做到这一点 Example 假设我在views py 中创建一个表单并包含如下前缀 myform SomeForm prefix prefix 然
  • delphi exe 和 dll 无需使用运行时包构建

    对于我的上一个项目 我在 Delphi 应用程序中使用了许多框架 所以我决定创建 dll 并将它们放入 dll 中 全部在 Delphi 中创建 我浏览了许多网站并提出了有效的代码 但对于该示例 我必须使用以下命令编译应用程序和 dll使用
  • Matplotlib 条形图:将两个不同的 y 轴对齐为零

    我在条形图中有两组数据 它们的轴非常不同 一组非常负 7500 一组稍微正 5 如何让两个 y 轴在 0 处对齐 同时仍保持良好的尺寸 使用set ylim意味着您看不到第二个数据集 我正在使用的当前代码 A165H 4915 7037 B
  • Android 在枚举中使用 Drawable

    我有一个项目 我必须设计一系列硬币并使用它 我的 GUI 看起来像这样 https i stack imgur com 9evmz png https i stack imgur com 9evmz png 我希望能够从 coinArray
  • 错误:在锁定文件中发现意外的锁定协议。预期为 3,发现为 0。

    我将我的 android studio 更新为 2 3 然后将我的应用程序连接到 Firebase 时 它 给了我一个错误 错误 在锁定文件中发现意外的锁定协议 预期为 3 发现为 0 我需要回到 2 2 3 还是有什么办法可以解决这个问题
  • Pygame - 同时播放声音

    我正在使用 Pygame 制作游戏 我想做的是为每个级别提供一个主要声音 并在收集积分时听到一些默认声音 例如 因此 我使用以下方法加载主关音乐 pygame mixer music load music file pygame mixer
  • Paypal 定期订阅问题

    当有人开始定期订阅时 我会传递custom变量 其中包含我的系统上用户的用户 ID 付款后 我收到两个 IPN subscr signup 和 subscr payment 两者都有自定义变量 可以让我识别用户 但是 对于未来的定期付款 I
  • 当我尝试保留对象时,Phoenix 框架向我发送“名为“_toDoListMaster_key”的 cookie 超过 4096 字节的最大大小”

    一切都在标题中 当我在浏览器中查找 cookie 时 我得到 toDoListMaster key SFMyNTY g3QAAABbQAAAAtfY3NyZl90b2tlbmQAA25pbA ehmC7o9 KRHqClwacE38DX1J
  • Excel 2010 - 将单个 XSLM 导出到多个 CSV 文件

    好吧 基本上我有一个包含大约 40k 行的 XSLM 文件 我需要将这些行导出为自定义的 CSV 格式 分隔并 标记每个单元格的边界 一旦导出 它们就会被 Joomla 导入器应用程序读入并处理到数据库中 我找到了一个很好的宏脚本 它可以做
  • 挂钩 Python 中的每个函数调用

    我有一个庞大的代码库 其中包含数千个函数 我想在每次函数调用之前和之后 函数启动和结束时启用代码执行 有没有一种方法可以在不重新编译 Python 或向每个函数添加代码的情况下完成此操作 有没有办法挂钩我的代码中的每个函数调用 是的 您可以
  • dart 中的 List 到 List

    有谁知道如何转换List
  • 从 file:// 运行 Svelte 应用程序,无需服务器

    我需要运行一个 Svelte 应用程序并且能够在没有服务器的情况下执行它 对于其他框架 这是可能的 因为它只是 javascript 但我找不到一种方法来单击我的 index html 并运行用 Svelte 构建的应用程序 我需要运行一个
  • 布局:装饰在百里香中不起作用

    我试图引入一种布局 如here https ultraq github io thymeleaf layout dialect Examples html 在我的应用程序中使用 thymeleaf 但无法让它工作 我已经查过了this ht
  • 在方法内切片列表 (Python 3)

    我有一个类似以下的方法 def slice list my list slice point my list my list slice point print Inside method my list return 我对其进行了如下测试
  • 如何在 Django 2.1 中将多个 slugs 添加到一个 url 路径中?

    我想要一个像这样的 URL 路径 www example com bachelor frankfurt university corporate finance 如您所见 本示例中的 URL 路径包含 3 个 slugs 对于这些类别 我有
  • 将一种类型的文件添加到一个 zip 文件并使用 PowerShell 进行清理

    如何创建 PowerShell 脚本来获取所有 BAK 类型的文件并将它们添加到 ZIP 文件中 我可以让我的 PowerShell 脚本在调用时采用参数来控制将容纳所有 bak 文件的 ZIP 文件的名称吗 成功压缩后删除 bak 文件
  • 将元数据添加到tensorflow freeze graph pb

    为了分享我们训练有素的张量流网络 我们将图冻结成 pb文件 我们还创建一个包含一些元数据的 xml 文件 例如输入张量和输出张量 要应用的预处理类型 训练数据信息等 然后使用 Java 或 C 通过加载图形和评估张量等来提供模型 为了使共享