Как преобразовать Tensorflow 2. *, обученный с моделью Keras, в формат .onnx? - PullRequest
1 голос
/ 10 апреля 2020

Я использую Python 3.7.4 с TensorFlow 2.0 и Keras 2.2.4-tf для обучения моей собственной модели CNN. Все идет хорошо Я могу использовать, например, model.save (my_model), а затем использовать его в других Python скриптах. Проблема возникает, когда я хочу использовать обученную модель в OpenCV с ее модулем DNN в C ++. 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?

1 Ответ

2 голосов
/ 11 апреля 2020

Последняя версия keras2onnx (в github master) поддерживает TensorFlow 2.

Вы можете установить его так:

pip install git+https://github.com/microsoft/onnxconverter-common
pip install git+https://github.com/onnx/keras-onnx
...