返回

Firebase 机器学习解释器初始化中的内置操作符版本不兼容

Android

Firebase 机器学习:初始化解释器时的内置操作符不兼容问题

引言

使用 Firebase 机器学习和 TensorFlow Lite 时,在初始化解释器时可能会遇到内部错误:“无法创建解释器:找不到用于内置操作码“FULLY_CONNECTED”的版本“9”的操作”。本文将探讨此问题的可能原因和解决方案。

问题

初始化解释器时,抛出了以下错误消息:

Internal error: Failed to create interpreter: Cannot find operation for built-in opcode 'FULLY_CONNECTED' with version '9'.

可能原因

  • TensorFlow Lite 版本不匹配: TensorFlow Lite 版本与用于创建模型的 TensorFlow 版本不一致。
  • 内置操作符版本不兼容: 模型中使用的内置操作符版本与 TensorFlow Lite 版本不兼容。

解决方案

1. 验证 TensorFlow Lite 版本

确保 Android 插件中的 TensorFlow Lite 版本与用于创建模型的 TensorFlow 版本相匹配。

2. 验证内置操作符版本

检查模型是否针对 TensorFlow Lite 2.15.0 及更高版本编译,因为内置操作符的版本通常与 TensorFlow Lite 版本相关联。

3. 更新 Android 插件

使用最新版本的 Firebase 机器学习 Android 插件,因为旧版本可能与 TensorFlow Lite 不兼容。

4. 检查模型文件

确保下载的模型文件未损坏。尝试重新下载模型并重新初始化解释器。

5. 优化模型

使用 TensorFlow Lite 转换器优化模型。这可以减少模型的大小和复杂性,并可能解决与内置操作符不兼容的问题。

其他建议

  • 检查输入和输出张量形状: 确保使用正确的输入和输出张量形状来初始化解释器。
  • 查看控制台日志: 获取更多错误详细信息。
  • 参考文档: 请参阅 TensorFlow Lite 文档以了解有关内置操作符版本的更多信息。

代码更新

// 处理内置操作符版本不兼容的情况
if (e.getMessage().contains("FULLY_CONNECTED")) {
    Log.e("tensorflow model", "Error: FULLY_CONNECTED version 9 not supported.");
} else {
    throw e;
}

结论

初始化解释器时的内置操作符不兼容问题通常可以通过更新 TensorFlow Lite 版本、检查模型版本、更新 Android 插件或优化模型来解决。了解问题的原因和可能的解决方案至关重要,以确保 Firebase 机器学习和 TensorFlow Lite 应用的顺利运行。

常见问题解答

1. 如何检查模型版本?

使用 TensorFlow Lite 转换器或查看模型文件中的元数据。

2. TensorFlow Lite 的哪个版本支持内置操作符版本 11?

TensorFlow Lite 2.15.0 及更高版本。

3. 如何优化模型?

使用 TensorFlow Lite 转换器并探索量化、修剪和其他优化技术。

4. 如何解决模型文件损坏的问题?

重新下载模型并重新初始化解释器。

5. 如何获取有关错误的更多详细信息?

查看控制台日志并使用调试工具进行故障排除。