为什么来自 tensorflow.js 的 loadGraphModel 函数不起作用?

Why loadGraphModel function from tensorflow.js not working?

我正在部署我使用 tensorflow 训练的 ML(在 Python 中)。模型保存为 .h5 文件。使用 tensorflowjs_converter --input_format=keras ./model/myFile.h5 /JS_model/ 命令转换模型后。

我使用以下方法导入了 tensorflow 库: <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js"> </script>

在此之后,我可以使用 loadLayersModel() 函数加载模型。但是,当使用 loadGraphModel 时,它不起作用。它在浏览器上输出此错误: ''

我还尝试在 python 中使用 tf.models.save_model.save() 函数,它输出变量和资产文件夹,以及 .pb 文件。但是,仍然会发生错误。使用上面的代码,仅将路径更改为 'THE_classifier'(这是资产、变量和 .pb 所在的文件夹的名称),输出为:

我想使用 loadGraphModel() 函数,因为根据各种来源,它提供了更快的推理时间。

层模型和图形模型的内部布局不同,它们不兼容且不可互换。如果它是层模型,则必须加载 tf.loadLayersModel 如果它是图形模型,则必须加载 tf.loadGraphModel

图模型是冻结模型-所以如果你想将keras模型转换为图,你需要先冻结它,否则它只能转换为图层模型

(这就是推理时间差异的来源 - 评估冻结模型比仍在使用变量的模型更快)