Keras 部署 Tensorflow.js 用途

Keras Deploy for Tensorflow.js Usage

我需要能够为 Tensorflow.js 预测部署一个 keras 模型,但是 the Firebase docs only seem to support a TFLite object, which tf.js cannot accept. Tf.js appears to accept JSON files for loading (loadGraphModel() / loadLayersModel() ),而不是 keras SavedModel (.pb + /assets + /variables)。

我怎样才能达到这个目标?

Tensorflow.js 部分注意事项: 有很多指向 tfjs_converter, but the closest API function offered to what I'm looking for is the loadFrozenModel() 函数的指针,它需要 .pb 和一个weights_manifest.json。在我看来,在将其发送到 GCloud 之前,我必须以编程方式 assemble 进行此操作,因为 keras SavedModel 不包含两者(我的包含 .pb + /assets + /variables)。

对于简单的部署功能来说,这似乎很乏味,我想我的问题只针对每个工具的常见用法。

我正在寻找的是来自 Keras 的简单途径 => Firebase/GCloud => Tensorflow.js.

所以我理解你的困惑,但你已经准备好了一半。 所以如果我理解正确的话,你的keras模型有以下文件和文件夹:

saved_model.pb
/assests
/variables

这足以将keras模型转换为tensorflow.js模型。 按以下方式使用转换器脚本。确保您拥有最新版本的 tfjs。如果您没有最新版本,请尝试创建一个 virtual environment 并安装最新的 tfjs 否则它会破坏您的 tensorflow 版本。

import tensorflowjs as tfjs
import tensorflow as tf

model=tf.keras.models.load_model('path/to/keras/model')

tfjs.converters.save_keras_model(model, 'path/where/you/will/like/to/have/js/model/converted')

转换模型后,您将收到以下 js 模型的文件。

model.json
something.bin

您将必须使用网络服务器托管这些文件,并使其可用于 loadLayersModel API,如下所示:

const model = await tf.loadLayersModel(
     'location/of/model.json');

就是这样,您已将模型从 Keras 转换为 Tensorflowjs 并在 js 中上传。

希望我的回答对你有所帮助