You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo托管应用加载自定义TensorFlow模型时Bin文件导入报错求助

解决React Native/Expo中加载TensorFlow.js模型二进制文件的错误

错误原因

直接用require()导入.bin二进制文件会导致Metro将其当作JavaScript文件解析,而二进制文件包含非UTF-8字符,因此抛出语法错误。

解决步骤

1. 修正Metro配置

确保Metro将.bin和.json文件识别为资源而非JS模块,修改metro.config.js:

const { getDefaultConfig } = require('@expo/metro-config');

const config = getDefaultConfig(__dirname);
// 添加支持的资源扩展名
config.resolver.assetExts.push('bin', 'json');

module.exports = config;

2. 使用tfjs-react-native的正确加载方式

无需手动导入.bin文件,利用bundleResourceIOAPI结合模型的JSON文件加载完整模型:

import * as tf from '@tensorflow/tfjs';
import { bundleResourceIO } from '@tensorflow/tfjs-react-native';
// 导入模型的JSON配置
import modelJson from './js-model/model.json';

async function loadClassifierModel() {
  // 初始化TensorFlow.js环境
  await tf.ready();
  // 加载模型,自动关联二进制分片文件
  const model = await tf.loadLayersModel(
    bundleResourceIO(modelJson, require('./js-model/group1-shard1of1.bin'))
  );
  
  console.log('模型加载完成');
  // 后续可调用model.predict()等方法使用模型
}

3. 验证文件路径

确保model.json和group1-shard1of1.bin放在同一目录下,且代码中的路径引用正确,保证Expo/Metro能访问到这些文件。

补充说明

你的依赖中已包含@tensorflow/tfjs-react-native和expo-gl,满足模型加载的环境要求,无需额外安装依赖。

内容的提问来源于stack exchange,提问作者Joe Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:23:19