Как квантование применяется / моделируется в программном обеспечении? - PullRequest
0 голосов
/ 18 марта 2019

Как квантование применяется / моделируется в программном обеспечении на практике? Предположим, например, что я хотел бы вычислить, какую ошибку в выводе какой-либо функции я получу, если вместо использования 16-битных значений с плавающей запятой я должен был использовать 6-битные целочисленные значения в параметрах функции. Если это имеет значение для этого вопроса, меня интересует применение квантования к нейронным сетям и т. П.

Мои наивные мысли по этому поводу: либо каким-то образом вынудить машину использовать пониженную битовую точность (кажется неосуществимым или простым в ОС общего назначения, такой как Linux, но мне было бы интересно узнать, выполняется ли это на практике ) или искусственно смоделировать квантование путем сопоставления диапазонов чисел с плавающей точкой единому целочисленному значению, где целочисленное значение представляет одно квантованное значение.

Я поставил C и python в качестве тегов, потому что я могу понимать эти языки, только если вы хотите ответить кодом.

1 Ответ

0 голосов
/ 18 марта 2019

В целом существует три подхода:

  1. Анализ
  2. Моделирование
  3. Тестирование

Для анализа вы, конечно, должны понимать вычисления и быть опытным математиком.

Для симуляции вы все равно должны понимать вычисления, так как вам нужно переписать их на языке симуляции, но вам не нужно так хорошо разбираться в математике; -)

Тестирование является самым простым, поскольку вам не нужно ни разбираться в расчетах, ни в глубоких математических навыках. В вашем случае это должно быть довольно тривиально: поскольку имеются только 16-битные параметры, вы можете протестировать все комбинации из 2 аргументов с 2 ^ 16 x 2 ^ 16 = 2 ^ 32 итерации вашего теста ... мгновение ока на современном процессоре. Сравните результат, используя 16-разрядные числа с плавающей запятой и 6-разрядные числа, и сохраняйте простую статистику (средняя ошибка, максимальная ошибка и т. Д.). Если у вас более двух аргументов, вы можете сэкономить время на исчерпывающем тесте, попробовав большое количество случайных входных данных, но в остальном тот же подход.

...