Лучшая стратегия квантования модели Tensorflow

Я озадачен процессом квантования 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.

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


person Mariano Italiano    schedule 02.03.2020    source источник
comment
Здесь та же проблема, трудно поверить, что нет выбора для квантования моделей только ради производительности и оптимизации для работы в облаке, везде есть только мобильные устройства.   -  person ElPapi42    schedule 24.04.2020


Ответы (1)


Вы можете преобразовать модель в Tensorflow Lite и использовать неподдерживаемые операции (например, DecodeJpeg) из TF, это называется SELECT TF OPS, см. Руководство здесь о том, как включить его во время преобразования.

person Karim Nosseir    schedule 22.07.2020