Tensorflow Lite toco --mean_values ​​--std_values? - PullRequest
0 голосов
/ 19 января 2019

Итак, я натренировал модель тензорного потока с поддельным квантованием и заморозил ее с помощью файла .pb в качестве вывода. Теперь я хочу передать этот файл .pb в tenorflow lite toco для полного квантования и получить файл .tflite.

Я использую этот пример тензорного потока: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/micro/examples/micro_speech

Часть, где у меня есть вопрос:

bazel run tensorflow/lite/toco:toco -- \
--input_file=/tmp/tiny_conv.pb --output_file=/tmp/tiny_conv.tflite \
--input_shapes=1,49,43,1 --input_arrays=Reshape_1 --output_arrays='labels_softmax' \
--inference_type=QUANTIZED_UINT8 --mean_values=0 --std_values=2 \
--change_concat_input_ranges=false

Вышеуказанная часть вызывает toco и выполняет преобразование. Обратите внимание, что mean_values ​​установлен на 0, а std_values ​​установлен на 2 Google. Как они рассчитали эти 2 значения? Для этой конкретной модели она обучается распознавать слова «да» и «нет». Что если я хочу распознать 10 цифр, нужно ли в этом случае менять среднее и стандартное значения? Я не нашел никакой официальной документации, иллюстрирующей эту часть. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 05 февраля 2019

Для квантованных моделей uint8 входные значения должны находиться в диапазоне от 0 до 255. Даже с FakeQuantification входные значения во время обучения часто являются значениями с плавающей запятой в другом диапазоне (например, от 0,0 до 1,0). Mean_value и std_value управляют тем, как значения uint8 в диапазоне от 0 до 255 отображаются на значения с плавающей запятой, используемые во время обучения. Вы можете использовать эту эвристику для определения этих значений:

mean_value = значение uint8 в диапазоне [0, 255], которое соответствует плавающей точке 0.0. Так что если диапазон с плавающей запятой равен [0.0, 1.0], то mean_value = 0.

std_value = (uint8_max - uint8_min) / (float_max - float_min). Так что если диапазон с плавающей запятой равен [0.0, 1.0], то std_value = 255 / 1.0 = 255.

Мы работаем над тем, чтобы сделать это проще. Надеюсь, это поможет!

...