【问题标题】:Keras Deploy for Tensorflow.js Usage用于 Tensorflow.js 的 Keras 部署
【发布时间】:2020-07-30 17:07:33
【问题描述】:

我需要能够为 Tensorflow.js 预测部署 keras 模型,但 the Firebase docs 似乎只支持 TFLite 对象,即 tf.js cannot accept。 Tf.js 似乎接受 JSON 文件以加载 (loadGraphModel() / loadLayersModel() ),但不接受 keras SavedModel (.pb + /assets + /variables)。

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

Tensorflow.js 部分的注意事项: 有很多指向 tfjs_converter 的指针,但最接近我正在寻找的 API 函数是 loadFrozenModel() 函数,这需要.pbweights_manifest.json。在我看来,在将其发送到 GCloud 之前,我必须以编程方式组装它,因为 keras SavedModel 不包含两者(我的包含 .pb + /assets + /variables)。

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

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

【问题讨论】:

    标签: firebase tensorflow keras google-cloud-platform tensorflow.js


    【解决方案1】:

    所以我理解你的困惑,但你已经准备好了一半。 因此,如果我理解正确,您的 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 中上传。

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

    【讨论】:

    • 自定义模型怎么样? NotImplementedError: Saving the model to HDF5 format requires the model to be a Functional model or a Sequential model. It does not work for subclassed models, because such models are defined via the body of a Python method, which isn't safely serializable.
    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多