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

tf.loadLayersModel加载模型报错:JSON无拓扑或权重清单

解决tf.loadLayersModel加载转换后的Keras模型报错问题

问题场景

用tf.keras训练分类器后,通过tensorflowjs_converter将.h5模型转换为TFJS格式,执行命令:

!tensorflowjs_converter --input_format=keras '/content/ver1.h5' '/content/json'

使用tf.loadLayersModel("http://127.0.0.1:8080/model.json")加载模型,已用带--cors参数的http-server处理跨域,但控制台持续报错:

http.ts:175 Uncaught (in promise) Error: The JSON from HTTP path http://127.0.0.1:8080/model.json contains neither model topology nor manifest for weights.

报错触发代码段:

const modelTopology = modelJSON.modelTopology;
const weightsManifest = modelJSON.weightsManifest;
if (modelTopology == null && weightsManifest == null) {
  throw new Error(`The JSON from HTTP path ${this.path} contains neither model ` + `topology or manifest for weights.`);
}

但直接打开http://127.0.0.1:8080/model.json可看到modelTopology和weightsManifest字段均存在,需排查解决。


解决方案

  • 校验HTTP响应的真实内容
    浏览器直接打开的内容可能是本地缓存,打开开发者工具(F12)→ 切换到Network标签,刷新页面后找到model.json请求,查看Response标签下的内容,确认返回的JSON结构是否完整,是否被HTML错误页、多余空格、BOM头等字符污染。

  • 对齐tensorflowjs_converter与TFJS版本
    转换器和前端TFJS版本不兼容会导致解析失败,执行以下命令检查版本:

    # 查看转换器版本
    tensorflowjs_converter --version
    # 查看前端TFJS版本(npm环境)
    npm list @tensorflow/tfjs
    

    确保两者主版本一致(如均为4.x或3.x),版本差异过大易引发模型结构不兼容问题。

  • 重新转换模型并指定输出格式
    尝试添加明确的输出格式参数重新转换:

    tensorflowjs_converter --input_format=keras --output_format=tfjs_layers_model '/content/ver1.h5' '/content/json'
    

    转换完成后检查输出目录,确保存在model.json及对应权重文件(如group1-shard1ofN.bin),且权重文件路径在model.json的weightsManifest中配置正确。

  • 确认http-server服务目录
    启动http-server时需进入包含model.json和权重文件的目录,避免路径错误:

    cd /content/json
    http-server --cors
    

    若服务目录错误,请求可能返回404页面等无效内容,导致解析失败。

  • 清除浏览器缓存
    按Ctrl+Shift+R强制刷新页面,或在开发者工具中勾选“Disable cache”选项后重新加载,避免浏览器缓存旧的错误响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:10:48