Лучшая стратегия квантования модели тензорного потока - PullRequest
2 голосов
/ 02 марта 2020

Я озадачен процессом квантования после обучения Tensorflow. Официальный сайт ссылается на квантование Tensorflow Lite. К сожалению, в моем случае это не работает, то есть TFLiteConverter возвращает ошибки для моей модели RCNN с маской:

Some of the operators in the model are not supported by the standard TensorFlow Lite runtime and are not recognized by TensorFlow. If you have a custom implementation for them you can disable this error with --allow_custom_ops, or by setting allow_custom_ops=True when calling tf.lite.TFLiteConverter(). Here is a list of builtin operators you are using: <...>. Here is a list of operators for which you will need custom implementations: DecodeJpeg, StatelessWhile.

В основном, я перепробовал все доступные варианты TFLiteConverter, включая экспериментальные из них. Я не совсем удивлен этими ошибками, так как может иметь смысл не поддерживать decodejpeg для мобильных устройств, однако я хочу, чтобы моя модель обслуживалась Tensorflow Serving, поэтому я не знаю, почему Tensorflow Lite является официальным выбором для go за. Я также попробовал Инструмент преобразования графиков , который кажется устаревшим, и обнаружил 2 проблемы. Во-первых, невозможно квантовать с помощью bfloat16 или float16, только int8. Во-вторых, квантованная модель ломается с ошибкой:

Broadcast between [1,20,1,20,1,256] and [1,1,2,1,2,1] is not supported yet

, что не является проблемой в обычной модели.

Кроме того, стоит упомянуть, что моя модель изначально была построена с Tensorflow 1 .x, а затем перенесен в Tensorflow 2.1 через tensorflow.compat.v1.

Эта проблема украла значительное количество моего времени. Я был бы благодарен за любую реплику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...