javascript - 从 json 对象而不是 json 加载 Tensorflowjs
问题描述
我正在尝试使用 model.json 加载一个 Tensorflowjs 模型,它是一个内存浏览器端对象。
https://js.tensorflow.org/api/latest/#loadLayersModel
一种方法可能是从虚拟 fetch 方法返回 json。
fetchFunc (Function) 用于覆盖 window.fetch 函数的函数。
或者,可以创建一个自定义的 IOHandler,但是这方面的文档很少。
一个 tf.io.IOHandler 对象,它使用其 load 方法加载模型工件。
有谁知道如何使用 tensorflow 加载方法来实现这一点?
var modelJson = "{...ModelAndWeightsConfig}";
//Do something here to load it.
var newModel = tf.loadLayersModel("/model_0/model.json", {
onProgress: onProgressCallback}).then(model =>{});
问候,
解决方案
是的,您可以自己编写IOHandler
来加载模型。IOHandler
在此处查看 an 的定义。您必须实现load
返回 a 的函数Promise<ModelArtifacts>
。
这意味着,要加载文件 IOHandler保存的模型,您可以查看源代码并自己重新实现加载函数。
代码示例
这是帮助您入门的示例。该load()
部分主要是loadJSONModel
从文件 IOHandler 中的函数复制而来的。基本上,JSON 字符串作为参数传递,然后在load
Tensorflow.js 调用函数时使用。
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);
推荐阅读
- php - 如何获得空日期时间戳和其他确定的持续时间?
- python - 在python的时间列中查找共享时间(重叠)
- javascript - 将 JSON 文件解析为数组,只将最后读取的值放在任何地方
- algorithm - algorithm - Fruchterman 和 Reingold 力导向图布局算法中的温度变量是什么意思?
- angularjs - ng-repeat表达式中的AngularJS ng-class
- .net - 从 .NET 应用程序建立到本地 Pervasive DB 的 ODBC DSN-Less 连接
- python-3.x - 如何避免这个 ssl.SSLError,或者干脆忽略?
- android - 寻找不一致的视频视图
- javascript - 动态添加表单域——ReactJs
- mysql - 调用 mysql 后 express-http-context 丢失