TFLite端侧训练初始化解释器报错Op builtin_code out of range:142如何解决
问题根因
你遇到的java.lang.IllegalArgumentException: Internal error: Cannot create interpreter: Op builtin_code out of range: 142报错是典型的TFLite模型生成端与运行端版本不匹配问题:编号142对应的是TFLite 2.7版本才正式支持的端侧训练相关内置OP(VarHandle等),Android端的TFLite运行时版本低于模型生成用的tf-nightly版本,无法识别该OP,所以初始化失败。
排查和解决步骤
- 版本对齐
你生成模型使用的是tf-nightly==2.7.0-dev20210919版本,Android端TFLite运行时必须使用同版本快照依赖,不能使用2.6及更早的稳定版本。直接替换app模块build.gradle中的依赖即可:dependencies { // 替换原有tflite核心依赖,与Python端版本对齐 implementation 'org.tensorflow:tensorflow-lite:2.7.0-nightly-SNAPSHOT' // 若使用GPU委托、支持库等扩展组件,同步升级对应版本 implementation 'org.tensorflow:tensorflow-lite-gpu:2.7.0-nightly-SNAPSHOT' implementation 'org.tensorflow:tensorflow-lite-support:0.3.0-nightly-SNAPSHOT' } - 验证仓库配置
确认项目根目录的build.gradle中已经添加了快照仓库地址,确保可以拉取到对应的测试版本依赖:allprojects { repositories { maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } google() mavenCentral() } } - 清理缓存重构建
执行./gradlew clean命令清理本地旧版本缓存后再打包运行,避免残留依赖引发兼容问题。 - 可选稳定版方案
如果不想使用快照版本,可以将Python端的TensorFlow升级到2.7及以上正式稳定版重新生成模型,Android端对应使用org.tensorflow:tensorflow-lite:2.7.0及以上正式版本,运行稳定性更高。
内容的提问来源于stack exchange,提问作者Raghavendra Rao Suresh
相关产品推荐
相关产品推荐

