Open ismukhin opened 8 months ago
Разобрался в проблеме: keras
и tf
не обладают обратной совместимостью, то есть, если модель изначально была в сохранена через tf.saved_model.save
, то ее не получится загрузить через tf.keras.models.load_models
, но при этом верно обратное: если сохранили через tf.keras.saving.save_model
, то мы сможем ее загрузить через tf.saved_model.load
и работать с inference_function.
С другой стороны, мы можем сделать обертку над inference_function, получаемую через tf.saved_model.load
с помощью tf.Module
, однако в общем случае это задача не тривиальная, поскольку существуют отличия, например, между именами операций и слоев, плюс, возвращаясь к nncf
, нужны определенные атрибуты класса за что-то отвечающие. После этого действия сохранить как keras
модель.
@n-berezina-nn, пытаюсь написать квантизацию
nncf
. Данный фреймворк поддерживает несколько бэкендов:onnx
,pytorch
,openvino
иtensorflow
. Чтобы передать модель для квантизации изtensorflow
, нужно сделать так, чтобы загруженная модель была наследником классаtf.Module
. Этого можно достичь, если считать saved_model формат черезtf.keras.models.load_model(...)
. Попробовал сконвертировать модели efficientnet-b0, googlenet-v4-tf и densenet-121-tf. Строка для googlenet-v4-tf:python3 tf_converter.py --model_path /home/vanya/projects/dl-benchmark/public/googlenet-v4-tf/inception_v4.frozen.pb --input_name input --output_names InceptionV4/Logits/Predictions
Строка для efficientnet-b0:python3 tf_converter.py --model_path /home/vanya/projects/dl-benchmark/public/efficientnet-b0/efficientnet-b0/model.ckpt.meta --input_name sub --output_names logits
Модели переходят в этот формат, но в обоих случаях возникают логи:После этого я попытался загрузить модели с помощью
tf.keras.models.load_model(...)
и выдало такую ошибку:Версии библиотек:
При этом модель densenet-121-tf уже при загрузке через omz была в формате saved_model, ее получилось загрузить через
tf.keras.models.load_model(...)
и структура saved_model формата идентична тому, что создается скриптомtf_converter.py
. В чем может проблема? Заранее спасибо!