React中加载TensorFlow模型报错:无法解析模型JSON文件
解决React中TensorFlow.js加载本地模型JSON解析失败的问题
可能的原因及对应解决方案
1. 路径引用错误(最常见)
React项目的public目录是静态资源的根目录,加载时不需要带../public前缀,直接用根路径即可。修改加载代码:
import * as tf from '@tensorflow/tfjs'; let model; (async () => { // 直接从根目录指向模型文件 model = await tf.loadGraphModel('/model/model.json'); if(model && model.predict) { console.log('Model has predict method'); } })(); export default model;
2. Model.json文件格式损坏
虽然旧项目能正常加载,但复制到React的public目录时可能出现文件内容变动或损坏:
- 直接打开
public/model/model.json,检查是否存在JSON语法错误(比如多余逗号、未闭合的引号/括号) - 对比旧项目中的原文件,确认内容完全一致
3. 模型权重文件缺失或路径不匹配
检查model.json中引用的权重文件(如group1-shard1ofX.bin)是否和model.json在同一目录下,且文件名、路径与JSON内的描述完全匹配。
4. 异步导出的潜在问题
当前代码直接导出初始为undefined的model变量,后续使用时可能模型还未加载完成。可以改为导出加载函数,确保使用时机正确:
import * as tf from '@tensorflow/tfjs'; export const loadModel = async () => { const model = await tf.loadGraphModel('/model/model.json'); console.log('Model loaded successfully'); return model; };
使用示例:
import { loadModel } from './your-model-file-path'; loadModel().then(model => { // 在此处调用model.predict等方法 });
5. 开发服务器缓存问题
若之前修改过模型文件,浏览器可能缓存了旧内容:
- 打开开发者工具(F12),在Network面板勾选「Disable cache」后刷新页面
- 或直接清除浏览器缓存后重试
内容的提问来源于stack exchange,提问作者devChrus
相关产品推荐
相关产品推荐

