簡體   English   中英

如何將使用 Keras model 訓練的 Tensorflow 2.* 轉換為.onnx 格式?

[英]How to convert Tensorflow 2.* trained with Keras model to .onnx format?

I use the Python 3.7.4 with TensorFlow 2.0 and Keras 2.2.4-tf to train my own CNN model. 一切順利。 我可以使用例如 model.save(my_model),然后在其他 Python 腳本中使用它。 當我想在 OpenCV 中使用經過訓練的 model 及其在 C++ 中的 DNN 模塊時,會出現問題。 cv::dnn:readNetFromTensorflow(model.pb, model.pbtxt),你可以看到兩個arguments,我不能得到第二個.pbtxt文件。 所以我決定使用.onnx 格式,因為它的靈活性。 問題是現有庫 keras2onnx 僅從 TensorFlow 1.* 獲取 model,我想避免使用它。 轉換它的代碼示例如下所示:

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)

還有其他方法可以將這種 model 轉換為 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 object 的文件。 訪問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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM