在 Tensorflow 中,将 Google 的 BigTransfer 模型转换为 Tensorflow Lite 时出现错误

Posted

技术标签:

【中文标题】在 Tensorflow 中,将 Google 的 BigTransfer 模型转换为 Tensorflow Lite 时出现错误【英文标题】:In Tensorflow, I'm getting errors converting Google's BigTransfer model into Tensorflow Lite 【发布时间】:2021-04-16 02:14:27 【问题描述】:

我想在设备上使用 Google BigTransfer 论文中的模型。

纸张: https://arxiv.org/abs/1912.11370

代码: https://github.com/google-research/big_transfer/blob/master/colabs/big_transfer_tf2.ipynb

这是我的 TF Lite 代码:

def representative_data_gen():
  for x, _ in validation_ds.take(QUANTIZATION_REPRESENTATIVE_DATASET_SIZE):
    yield [x]
    
converter = tf.lite.TFLiteConverter.from_saved_model(MODEL_DIR)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_data_gen

tflite_model = converter.convert()

这是我得到的错误:

<unknown>:0: error: failed while converting: 'main': Ops that can be supported by the flex runtime (enabled via setting the -emit-select-tf-ops flag):
        tf.SquaredDifference device = ""

看起来 Tensorflow Lite 无法执行 group_norm,因为 tf.SquaredDifference 没有操作。关于如何将 Google 的 BiT 模型转换为 Tensorflow Lite 的任何想法?

【问题讨论】:

试试TF select ops 但在这种情况下你不能使用量化。而且模型转换的可能性不是 100%。 【参考方案1】:

尝试使用TF select ops。但是,您可能需要确保您的 TFLite 解释器具有这些选择操作以进行推理。

【讨论】:

以上是关于在 Tensorflow 中,将 Google 的 BigTransfer 模型转换为 Tensorflow Lite 时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow 初级教程

如何将本地训练的 TensorFlow 图形文件部署到 Google Cloud Platform?

将本地训练的 TensorFlow 模型导入 Google Colab

如何在 Windows 10 上使用 Powershell 将 Google Colab 与本地 TensorFlow Jupyter 服务器一起使用?

招募TensorFlow领域的Google开发技术专家

开源推荐 5快速入门 Google 机器学习系统 TensorFlow