如何将使用 Keras 模型训练的 Tensorflow 2.* 转换为 .onnx 格式?
How to convert Tensorflow 2.* trained with Keras model to .onnx format?
我使用 Python 3.7.4 与 TensorFlow 2.0 和 Keras 2.2.4-tf 来训练我自己的 CNN 模型。一切顺利。我可以使用例如model.save(my_model),然后在其他Python脚本中使用。当我想在 OpenCV 中使用经过训练的模型及其在 C++ 中的 DNN 模块时出现问题。 cv::dnn:readNetFromTensorflow(model.pb, model.pbtxt), 如您所见,接受两个参数,但我无法获取第二个 .pbtxt 文件。所以我决定使用 .onnx 格式,因为它很灵活。问题是现有库 keras2onnx 仅采用来自 TensorFlow 1.* 的模型,我想避免使用它。转换它的代码示例如下所示:
import tensorflow as tf
import onnx
import keras2onnx
model = tf.keras.models.load_model(my_model_folder_path)
onnx_model = keras2onnx.convert_keras(model, model.name)
onnx.save_model(onnx_model, model_name_onnx)
是否有其他方法可以将此类模型转换为 onnx 格式?
最新版本的 keras2onnx(在 github master 中)支持 TensorFlow 2。
你可以这样安装:
pip install git+https://github.com/microsoft/onnxconverter-common
pip install git+https://github.com/onnx/keras-onnx
您需要创建一个可以保存 ONNX 对象的文件。访问 https://github.com/onnx/tutorials/blob/master/tutorials/OnnxTensorflowExport.ipynb
import tensorflow as tf
import onnx
import keras2onnx
model = tf.keras.models.load_model('Model.h5')
onnx_model = keras2onnx.convert_keras(model, model.name)
file = open("Sample_model.onnx", "wb")
file.write(onnx_model.SerializeToString())
file.close()
我使用 Python 3.7.4 与 TensorFlow 2.0 和 Keras 2.2.4-tf 来训练我自己的 CNN 模型。一切顺利。我可以使用例如model.save(my_model),然后在其他Python脚本中使用。当我想在 OpenCV 中使用经过训练的模型及其在 C++ 中的 DNN 模块时出现问题。 cv::dnn:readNetFromTensorflow(model.pb, model.pbtxt), 如您所见,接受两个参数,但我无法获取第二个 .pbtxt 文件。所以我决定使用 .onnx 格式,因为它很灵活。问题是现有库 keras2onnx 仅采用来自 TensorFlow 1.* 的模型,我想避免使用它。转换它的代码示例如下所示:
import tensorflow as tf
import onnx
import keras2onnx
model = tf.keras.models.load_model(my_model_folder_path)
onnx_model = keras2onnx.convert_keras(model, model.name)
onnx.save_model(onnx_model, model_name_onnx)
是否有其他方法可以将此类模型转换为 onnx 格式?
最新版本的 keras2onnx(在 github master 中)支持 TensorFlow 2。
你可以这样安装:
pip install git+https://github.com/microsoft/onnxconverter-common
pip install git+https://github.com/onnx/keras-onnx
您需要创建一个可以保存 ONNX 对象的文件。访问 https://github.com/onnx/tutorials/blob/master/tutorials/OnnxTensorflowExport.ipynb
import tensorflow as tf
import onnx
import keras2onnx
model = tf.keras.models.load_model('Model.h5')
onnx_model = keras2onnx.convert_keras(model, model.name)
file = open("Sample_model.onnx", "wb")
file.write(onnx_model.SerializeToString())
file.close()