"Only absolute URLs are supported" 使用 loadLayersModel 在 Tensorflow.js 中加载 Keras 模型时

"Only absolute URLs are supported" when loading Keras model in Tensorflow.js with loadLayersModel

我想从 NodeJS 服务器中的本地文件加载 Tensorflow.js 中的 Keras 模型,但出现以下错误:"Only absolute URLs are supported".

let tf = require("@tensorflow/tfjs");

(async () => {
    try
    {
        const model = await tf.loadLayersModel("/path/to/model.json");
    }
    catch(error)
    {
        console.error(error);
    }
})();

loadLayersModel 还不支持本地文件吗?

谢谢!

Tensorflow documentation 表示您应该使用 file:// 关键字直接访问您的文件系统,例如

tf.loadLayersModel("file://path/to/model.json");

模型的路径与您当前从中调用函数的文件夹相关。例如,如果上述函数在 /a/b/c 中的文件中并且模型在 /a/d/model.json 中,则正确的路径是 "file://../../d/model.json".

此外,需要一个require('@tensorflow/tfjs-node'),否则会抛出如下错误:"Only HTTP(s) protocols are supported".

完整的工作示例:

const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');

(async () => {
    try
    {
        const model = await tf.loadLayersModel('file://relative/path/to/model.json');
    }
    catch(error)
    {
        console.error(error);
    }
})();