Я озадачен процессом квантования Tensorflow после обучения. Официальный сайт относится к квантованию Tensorflow Lite. К сожалению, в моем случае это не работает, то есть TFLiteConverter
возвращает ошибки для моей модели Mask 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, поэтому я не знаю, почему Tensorflow Lite является официальным выбором. для. Я также пробовал Graph Transform Tool, который, кажется, быть устаревшим и обнаружил 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
.
Этот выпуск отнял у меня значительное количество времени. Буду благодарен за любую реплику.