是否可以将 tflite 转换为 pb?

Is it possible to convert tflite to pb?

是否可以将tflite模型转换为pb模型?

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

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

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

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

谢谢

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

实际上,有两种使用“pb”扩展名的 TensorFlow 图序列化格式:

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

  • saved_model.pb(或有时 saved_model.pbtxt)
  • variables/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”文件可能会根据上下文携带不同的内容。