gpt4 book ai didi

node.js - Tensorflow NodeJS - 序列化/反序列化模型而不将其写入 URI

转载 作者:行者123 更新时间:2023-12-04 16:29:07 30 4
gpt4 key购买 nike

在 NodeJS 中使用 Tensorflow。我已经使用以下方法训练了一个模型:

const model = await model.fit(inputs, expected, {
epochs: 100,
shuffle: true,
batchSize: 100,
verbose: 0
});

现在我想采用该模型并将其序列化为字符串值。注意我不想将它保存到文件系统或 API 端点( model.save(...) ),我想将它的表示存储在一个变量中(即我想要一个包含与我发现的值相同的值的变量)在文件中,如果我使用 model.save(...) )。

我想要类似 model.serialize() 的东西它将模型作为字符串或包含权重的 JSON 对象返回给我,这样我以后就可以重建我的模型,而不必被迫从文件系统中读取数据,也不必手动加载每个权重、单位等。

最佳答案

好的,我找到了一种方法来做到这一点,如果其他人需要帮助,我会在下面发布:

将模型保存为 JSON 字符串:

let result = await model.save(tf.io.withSaveHandler(async modelArtifacts => modelArtifacts));
result.weightData = Buffer.from(result.weightData).toString("base64");
const jsonStr = JSON.stringify(result);

然后再次加载:
const json = JSON.parse(jsonStr);
const weightData = new Uint8Array(Buffer.from(json.weightData, "base64")).buffer;
const model = await tf.loadLayersModel(tf.io.fromMemory(json.modelTopology, json.weightSpecs, weightData));

由于 ArrayBuffer 未序列化为 JSON,因此必须处理 weightData。如果有办法避免这种情况,那就太好了。

这是@tensorflow/tfjs-node v1.0.3

关于node.js - Tensorflow NodeJS - 序列化/反序列化模型而不将其写入 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55532746/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com