gpt4 book ai didi

tensorflow - 如何从 Tensorflow.js (.json) 模型转换为 Tensorflow (SavedModel) 或 Tensorflow Lite (.tflite) 模型?

转载 作者:行者123 更新时间:2023-12-04 02:34:20 29 4
gpt4 key购买 nike

我有 downloaded 一个来自谷歌的 Tensorflow.js (tfjs) 的预训练 PoseNet 模型,所以它是一个 json 文件。
但是,我想在 Android 上使用它,所以我需要 .tflite 模型。尽管有人将类似的模型从 tfjs 移植到 tflite here ,但我不知道他们转换了什么模型(PoseNet 有很多变体)。我想自己做这些步骤。另外,我不想运行一些有人上传到 stackOverflow 文件中的任意代码:

Caution: Be careful with untrusted code—TensorFlow models are code. See Using TensorFlow Securely for details. Tensorflow docs


有谁知道任何方便的方法来做到这一点?

最佳答案

您可以通过查看 json 文件找出您拥有的 tfjs 格式。它经常说“图形模型”。它们之间的区别是 here
从 tfjs 图模型到 SavedModel(更常见)
通过 tfjs-to-tf 使用 Patrick Levin

import tfjs_graph_converter.api as tfjs
tfjs.graph_model_to_saved_model(
"savedmodel/posenet/mobilenet/float/050/model-stride16.json",
"realsavedmodel"
)

# Code below taken from https://www.tensorflow.org/lite/convert/python_api
converter = tf.lite.TFLiteConverter.from_saved_model("realsavedmodel")
tflite_model = converter.convert()

# Save the TF Lite model.
with tf.io.gfile.GFile('model.tflite', 'wb') as f:
f.write(tflite_model)

从 tfjs 层模型到 SavedModel
注意: 这仅适用于层模型格式,而不适用于问题中的图形模型格式。我已经写了它们之间的区别 here
  • Install 并使用 tensorflowjs-convert 将 .json 文件转换为 Keras HDF5 文件(来自另一个 SO thread )。

  • 在 Mac 上,运行 pyenv ( fix ) 时会遇到问题,而在 Z-shell 上, pyenv 将无法正确加载 ( fix )。此外,一旦 pyenv 运行,请使用 python -m pip install tensorflowjs 而不是 pip install tensorflowjs ,因为 pyenv 没有为我更改 pip 使用的 python。
    一旦你遵循了 tensorflowjs_converter guide ,运行 tensorflowjs_converter 以验证它没有错误,并且应该只是警告你 Missing input_path argument 。然后:
    tensorflowjs_converter --input_format=tfjs_layers_model --output_format=keras tfjs_model.json hdf5_keras_model.hdf5
  • 将 Keras HDF5 文件转换为 SavedModel(标准 Tensorflow 模型文件)或使用 TFLiteConverter 直接转换为 .tflite 文件。以下在 Python 文件中运行:
  • # Convert the model.
    model = tf.keras.models.load_model('hdf5_keras_model.hdf5')
    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    tflite_model = converter.convert()

    # Save the TF Lite model.
    with tf.io.gfile.GFile('model.tflite', 'wb') as f:
    f.write(tflite_model)
    或保存到 SavedModel:
    # Convert the model.
    model = tf.keras.models.load_model('hdf5_keras_model.hdf5')
    tf.keras.models.save_model(
    model, filepath, overwrite=True, include_optimizer=True, save_format=None,
    signatures=None, options=None
    )

    关于tensorflow - 如何从 Tensorflow.js (.json) 模型转换为 Tensorflow (SavedModel) 或 Tensorflow Lite (.tflite) 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62544836/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com