如何将Keras模型与StandardScaler保存为TensorFlowJS格式
保存Keras模型与StandardScaler至TensorFlowJS格式
要同时保存模型和StandardScaler,你可以按以下步骤操作:
1. 保存StandardScaler的归一化参数
StandardScaler的核心是训练得到的均值(mean_)和缩放系数(scale_),你可以把这两个参数提取出来存成JSON文件(方便Node.js直接读取):
import json # 提取scaler的关键参数 scaler_params = { "mean": scaler.mean_.tolist(), "scale": scaler.scale_.tolist() } # 保存到模型目录下的JSON文件 with open(f"{tfjs_target_dir}/scaler_params.json", "w") as f: json.dump(scaler_params, f)
如果想用pickle保存整个scaler对象也可以,但Node.js读取pickle需要额外依赖,JSON方案更轻便。
2. 保存Keras模型为TFJS格式
这部分你已经掌握,执行以下代码即可:
import tensorflowjs as tfjs tfjs.converters.save_keras_model(model_00, tfjs_target_dir)
执行后,tfjs_target_dir目录下会同时包含TFJS模型文件和刚才的scaler_params.json。
3. 在Node.js中加载模型与Scaler参数
在Node.js环境中,用@tensorflow/tfjs-node加载模型,再手动实现StandardScaler的归一化逻辑:
const tf = require('@tensorflow/tfjs-node'); const fs = require('fs'); // 加载模型和scaler参数 async function loadModelAndScaler(modelDir) { // 加载TFJS模型 const model = await tf.loadLayersModel(`file://${modelDir}/model.json`); // 读取scaler参数 const scalerParams = JSON.parse(fs.readFileSync(`${modelDir}/scaler_params.json`, 'utf8')); // 定义归一化函数,模拟StandardScaler的transform逻辑 function scaleInput(inputData) { return tf.tidy(() => { const inputTensor = tf.tensor2d(inputData); const mean = tf.tensor1d(scalerParams.mean); const scale = tf.tensor1d(scalerParams.scale); return inputTensor.sub(mean).div(scale); }); } return { model, scaleInput }; } // 预测示例 async function runPrediction() { const { model, scaleInput } = await loadModelAndScaler('./path/to/your/tfjs_model'); // inputData需和训练时的输入格式一致 const inputData = [[1.2, 3.4, 5.6]]; const scaledInput = scaleInput(inputData); const prediction = await model.predict(scaledInput).data(); console.log('预测结果:', prediction); } runPrediction();
内容的提问来源于stack exchange,提问作者Ted Mosby
相关产品推荐
相关产品推荐

