gar*_*ryp 1 node.js tensorflow
在 NodeJS 中使用 Tensorflow。我已经使用以下方法训练了一个模型:
const model = await model.fit(inputs, expected, {
epochs: 100,
shuffle: true,
batchSize: 100,
verbose: 0
});
Run Code Online (Sandbox Code Playgroud)
现在我想采用该模型并将其序列化为字符串值。注意我不想将它保存到文件系统或 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);
Run Code Online (Sandbox Code Playgroud)
然后再次加载:
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));
Run Code Online (Sandbox Code Playgroud)
由于 ArrayBuffer 未序列化为 JSON,因此必须处理 weightData。如果有办法避免这种情况,那就太好了。
这是@tensorflow/tfjs-node v1.0.3
| 归档时间: |
|
| 查看次数: |
299 次 |
| 最近记录: |