【问题标题】:Is it possible to convert tflite to pb?是否可以将 tflite 转换为 pb?
【发布时间】:2021-04-23 12:27:55
【问题描述】:

tflite模型可以转pb模型吗?

我看过很多关于转换“pb->tflite”的文章, 但没有机会找到“tflite->pb”。

如果不可能, 有什么方法可以只用 tflite 文件进行量化?

(到目前为止,我注意到 tf.lite.TFLiteConverter.from_saved_model() 只接受 pb 文件, 这就是我尝试将 tflite 转换为 pb 的原因。

任何提示或建议都会很棒!

谢谢

【问题讨论】:

  • 不幸的是,这不是(很容易)可能或官方支持的。 TensorFlow Lite 团队已经考虑支持这一点,但如果可以的话,通常最好使用原始的 TensorFlow 图。请注意,TensorFlow 还不支持原生量化图执行,因此如果您在转换为 Lite 期间尝试反向转换使用 TensorFlow Lite 量化工具的模型,那将是有问题的。
  • 我想我需要尝试原始的 TensorFlow 图来进行量化。谢谢你告诉我!

标签: tensorflow-lite quantization


【解决方案1】:

首先,没有官方的 TensorFlow API 支持从 tflite 到 graphdef (pb) 文件的转换,如上节中描述的 jdduke@。

其实TensorFlow图序列化格式有两种,都是使用“pb”扩展的:

(1) 保存的模型(推荐)- 在 TF 版本一和二中都可以将给定的 TF 图导出到保存的模型。保存的模型格式并不简单,通常表示为一个目录。在保存的模型目录中,它包含以下文件,包括“pb”文件:

  • saved_model.pb(或有时 saved_model.pbtxt)
  • 变量/variables.index
  • variables.data-00000-of-00001

您可以将上述文件位置的目录名输入tf.lite.TFLiteConverter.from_saved_model(saved_model_dir),将保存的模型格式转换为对应的TFLite模型文件。

(2) Graph def 序列化文件(已弃用)- Graph def 序列化文件是 TF v1 的东西并且已弃用。大多数时候,图形定义文件都以“pb”扩展名存储。在这种情况下,您可以使用tf.compat.v1.lite.TFLiteConverter.from_frozen_graph(...) 进行转换。

“pb”关键字的含义是“protobuf”,它是一种二进制序列化格式,正在用于 TensorFlow 产品中。因此,TensorFlow 中的“pb”文件有可能在每个上下文中携带不同的东西。

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多