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

如何将Keras权重转换为JSON?TensorFlowJS相关问题求助

解决TensorFlow.js加载Keras权重的问题

一、明确model.loadWeights()的核心用法

这个方法的作用是给TensorFlow.js的LayersModel加载权重,仅支持两种输入格式:

  • 键为权重名称、值为嵌套数值数组的JSON对象
  • 键为权重名称、值为tf.Tensor对象的NamedTensorMap

关键提示:Keras原生的HDF5(.h5)权重文件无法直接传入,必须转成上述格式之一。

二、找到pykeras.py并转换权重

你找不到这个脚本是因为它不在node_modules中,而是属于TensorFlow.js的Python工具包:

  1. 先安装Python版TensorFlow.js:
pip install tensorflowjs
  1. 定位脚本位置:
    • 虚拟环境下:路径一般是venv/lib/pythonX.X/site-packages/tensorflowjs/scripts/pykeras.py
    • 全局安装下:路径通常是/usr/local/lib/pythonX.X/site-packages/tensorflowjs/scripts/pykeras.py(X.X对应你的Python版本)
  2. 执行转换命令:
python 你的pykeras.py路径 convert --weights 你的模型.h5路径 --output_dir 输出目录

执行后会在输出目录生成JSON格式的权重文件,即可用于model.loadWeights()。

三、更简便的替代方案:使用tensorflowjs_converter

官方现在更推荐用这个工具直接转换整个模型(结构+权重),步骤更简洁:

  1. 安装好tensorflowjs后执行:
tensorflowjs_converter --input_format keras 你的模型.h5路径 输出目录
  1. 转换完成后,输出目录会生成model.json和权重文件,直接用以下代码加载整个模型即可,无需手动调用model.loadWeights():
import * as tf from '@tensorflow/tfjs';

async function loadModel() {
  const model = await tf.loadLayersModel('输出目录/model.json');
  // 模型可直接使用
}

四、手动构建权重JSON(可选)

如果需要自定义权重转换,可在Python中手动提取并生成JSON:

import json
from tensorflow.keras.models import load_model

model = load_model('你的模型.h5')
weights_dict = {}
for layer in model.layers:
    for weight in layer.weights:
        weights_dict[weight.name] = weight.numpy().tolist()

with open('weights.json', 'w') as f:
    json.dump(weights_dict, f)

之后在JS中加载该JSON并传入model.loadWeights():

async function loadWeights() {
  const model = await tf.loadLayersModel('模型结构.json'); // 先加载模型结构文件
  const weightsData = await fetch('weights.json').then(res => res.json());
  await model.loadWeights(weightsData);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:05:32