Я озадачен процессом квантования после обучения 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
.
Эта проблема украла значительное количество моего времени. Я был бы благодарен за любую реплику.