Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Tensorflow NodeJS-序列化/反序列化模型,而不将其写入URI_Node.js_Tensorflow - Fatal编程技术网

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

Node.js Tensorflow NodeJS-序列化/反序列化模型,而不将其写入URI,node.js,tensorflow,Node.js,Tensorflow,在NodeJS中使用Tensorflow。我使用以下方法培训了一名模型: const model = await model.fit(inputs, expected, { epochs: 100, shuffle: true, batchSize: 100, verbose: 0 }); 现在我想获取该模型并将其序列化为字符串值。注意:我不想将其保存到文件系统或API端点模型中。保存…,我想将其表示形式存储在变量中,即,我想要一个包含与使用model.save

在NodeJS中使用Tensorflow。我使用以下方法培训了一名模型:

const model = await model.fit(inputs, expected, {
    epochs: 100,
    shuffle: true,
    batchSize: 100,
    verbose: 0
});
现在我想获取该模型并将其序列化为字符串值。注意:我不想将其保存到文件系统或API端点模型中。保存…,我想将其表示形式存储在变量中,即,我想要一个包含与使用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中实现的。好的,我找到了一种方法,如果其他人需要帮助,我会在下面发布:

要将模型保存为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版提供的,谢谢。正在寻找将tensorflow模型存储在mongoDb数据库中的方法。我认为这将是一个很好的答案,谢谢。比一个很好的答案要好。使用此方法,可以生成多个web工作程序,而不必将其模型加载到每个工作程序中,从而导致多个网络调用。。。您可以在主线程中加载模型,并将其传递给池中的每个工作线程。请注意,TF已从内存更新为接受单个参数,即对象{modelTopology:json.modelTopology,:weightSpecs:json.weightSpecs,weightData:weightData}。另外,如果需要,请确保使用tf.loadGraphModel。这是用于训练模型的格式。谢谢。正在寻找将tensorflow模型存储在mongoDb数据库中的方法。我认为这将是一个很好的答案,谢谢。比一个很好的答案要好。使用此方法,可以生成多个web工作程序,而不必将其模型加载到每个工作程序中,从而导致多个网络调用。。。您可以在主线程中加载模型,并将其传递给池中的每个工作线程。请注意,TF已从内存更新为接受单个参数,即对象{modelTopology:json.modelTopology,:weightSpecs:json.weightSpecs,weightData:weightData}。此外,如果需要,请确保使用tf.loadGraphModel。这是用于训练模型的格式。