从 json 对象而非 json 加载 Tensorflowjs
Load Tensorflowjs from json object not json
我正在尝试使用内存浏览器端对象 model.json 加载 Tensorflowjs 模型。
https://js.tensorflow.org/api/latest/#loadLayersModel
一种方法可能是 return 来自虚拟获取方法的 json。
fetchFunc (Function) A function used to override the window.fetch
function.
或者,可以创建自定义 IOHandler,但相关文档很少。
An tf.io.IOHandler object that loads model artifacts with its load
method.
有谁知道如何使用 tensorflow 加载方法实现这一点?
var modelJson = "{...ModelAndWeightsConfig}";
//Do something here to load it.
var newModel = tf.loadLayersModel("/model_0/model.json", {
onProgress: onProgressCallback}).then(model =>{});
此致,
获取模型
var fetchPromise = function(url,p1,p2,) {
return new Promise(function(resolve, reject) {
fetch(url)
.then(response => {
resolve(response);
}).catch(err =>{
reject();
});
});
};
是的,您可以编写自己的 IOHandler
来加载模型。查看 IOHandler
here. You have to implement the load
function that returns a Promise<ModelArtifacts>
.
的定义
也就是说,要加载file IOHandler保存的模型,可以查看源码,自己重新实现加载函数。
代码示例
这是帮助您入门的示例。 load()
部分大部分是从文件 IOHandler.c 中的 loadJSONModel
函数复制而来的。基本上,JSON 字符串作为参数传递,然后在 Tensorflow.js.
调用 load
函数时使用
export class JSONHandler implements tfc.io.IOHandler {
constructor(jsonString) {
this.jsonString = jsonString;
}
async load() {
const modelJSON = JSON.parse(jsonString);
const modelArtifacts: tfc.io.ModelArtifacts = {
modelTopology: modelJSON.modelTopology,
format: modelJSON.format,
generatedBy: modelJSON.generatedBy,
convertedBy: modelJSON.convertedBy
};
if (modelJSON.weightsManifest != null) {
// load weights (if they exist)
}
if (modelJSON.trainingConfig != null) {
modelArtifacts.trainingConfig = modelJSON.trainingConfig;
}
if (modelJSON.userDefinedMetadata != null) {
modelArtifacts.userDefinedMetadata = modelJSON.userDefinedMetadata;
}
return modelArtifacts;
}
}
要使用该模型,您可以创建它的实例并将其传递给加载函数:
const modelJson = '{ ... }';
const handler = new JSONHandler(modelJson);
const model = await tf.loadLayersModel(handler);
我正在尝试使用内存浏览器端对象 model.json 加载 Tensorflowjs 模型。
https://js.tensorflow.org/api/latest/#loadLayersModel
一种方法可能是 return 来自虚拟获取方法的 json。
fetchFunc (Function) A function used to override the window.fetch function.
或者,可以创建自定义 IOHandler,但相关文档很少。
An tf.io.IOHandler object that loads model artifacts with its load method.
有谁知道如何使用 tensorflow 加载方法实现这一点?
var modelJson = "{...ModelAndWeightsConfig}";
//Do something here to load it.
var newModel = tf.loadLayersModel("/model_0/model.json", {
onProgress: onProgressCallback}).then(model =>{});
此致,
获取模型
var fetchPromise = function(url,p1,p2,) {
return new Promise(function(resolve, reject) {
fetch(url)
.then(response => {
resolve(response);
}).catch(err =>{
reject();
});
});
};
是的,您可以编写自己的 IOHandler
来加载模型。查看 IOHandler
here. You have to implement the load
function that returns a Promise<ModelArtifacts>
.
也就是说,要加载file IOHandler保存的模型,可以查看源码,自己重新实现加载函数。
代码示例
这是帮助您入门的示例。 load()
部分大部分是从文件 IOHandler.c 中的 loadJSONModel
函数复制而来的。基本上,JSON 字符串作为参数传递,然后在 Tensorflow.js.
load
函数时使用
export class JSONHandler implements tfc.io.IOHandler {
constructor(jsonString) {
this.jsonString = jsonString;
}
async load() {
const modelJSON = JSON.parse(jsonString);
const modelArtifacts: tfc.io.ModelArtifacts = {
modelTopology: modelJSON.modelTopology,
format: modelJSON.format,
generatedBy: modelJSON.generatedBy,
convertedBy: modelJSON.convertedBy
};
if (modelJSON.weightsManifest != null) {
// load weights (if they exist)
}
if (modelJSON.trainingConfig != null) {
modelArtifacts.trainingConfig = modelJSON.trainingConfig;
}
if (modelJSON.userDefinedMetadata != null) {
modelArtifacts.userDefinedMetadata = modelJSON.userDefinedMetadata;
}
return modelArtifacts;
}
}
要使用该模型,您可以创建它的实例并将其传递给加载函数:
const modelJson = '{ ... }';
const handler = new JSONHandler(modelJson);
const model = await tf.loadLayersModel(handler);