В цифровом оборудовании числа хранятся в двоичных словах. Двоичное слово является последовательностью фиксированной длины битов (1's и 0). Тип данных задает, как аппаратные компоненты или функции программного обеспечения интерпретируют эту последовательность 1's и 0. Числа представлены как любое масштабированное целое число (обычно называемый фиксированной точкой) или типы данных с плавающей точкой.
Большинство предварительно обученных нейронных сетей и нейронных сетей, обученных с помощью Deep Learning Toolbox™, используют типы данных с плавающей запятой с одинарной точностью. Даже маленькие обученные нейронные сети требуют значительного объема памяти и требуют оборудования, которое может выполнить арифметику с плавающей точкой. Эти ограничения могут запретить развертывание возможностей глубокого обучения к микроконтроллерам малой мощности и FPGAs.
Используя пакет поддержки Библиотеки Квантования Модели Deep Learning Toolbox, можно квантовать сеть, чтобы использовать 8-битные масштабированные целочисленные типы данных.
Чтобы узнать о продуктах, требуемых квантовать и развернуть нейронную сеть для глубокого обучения в графический процессор, FPGA или среда центрального процессора, видит Необходимые условия Рабочего процесса Квантования (Deep Learning Toolbox).
Масштабированные 8-битные целочисленные типы данных ограничили точность и область значений, когда по сравнению с данными с плавающей запятой с одинарной точностью вводит. Существует несколько числовых факторов при кастинге номера от большего типа данных с плавающей точкой до меньшего типа данных фиксированной длины.
Потеря точности: потеря Точности является погрешностью округления. Когда потеря точности происходит, значение округлено к самому близкому номеру, который является представимым, по условию вводят. В случае связи это округляется:
Положительные числа к самому близкому представимому значению в направлении положительной бесконечности.
Отрицательные числа к самому близкому представимому значению в направлении отрицательной бесконечности.
В MATLAB® можно выполнить этот тип округления использования round
функция.
Потеря значимости: Потеря значимости является типом потери точности. Потери значимости происходят, когда значение меньше, чем наименьшее значение, представимое по условию, вводит. Когда это происходит, значение насыщает, чтобы обнулить.
Переполнение: Когда значение больше, чем самое большое значение, которое может представлять тип данных, переполнение происходит. Когда переполнение происходит, значение насыщает к самому большому значению, представимому, по условию вводят.
Используйте приложение Deep Network Quantizer, чтобы собрать и визуализировать динамические диапазоны весов и смещения слоев свертки и полносвязные слоя сети и активации всех слоев в сети. Приложение присваивает масштабированный 8-битный целочисленный тип данных для весов, смещений и активаций слоев свертки сети. Отображения приложения гистограмма динамического диапазона для каждого из этих параметров. Следующие шаги описывают, как эти гистограммы производятся.
Считайте следующие значения регистрируемыми для параметра при осуществлении сети.
Найдите идеальное бинарное представление каждого регистрируемого значения параметра.
Старший значащий бит (MSB) является крайним левым битом двоичного слова. Этот бит способствует больше всего значению номера. MSB для каждого значения подсвечен в желтом.
Путем выравнивания двоичных слов вы видите распределение битов, используемых регистрируемыми значениями параметра. Сумма MSB в каждом столбце, подсвеченном в зеленом, высказывает совокупное мнение регистрируемых значений.
Количества MSB каждого местоположения бита отображены как карта тепла. В этой карте тепла более темно-синие области соответствуют большему числу MSB в местоположении бита.
Приложение Deep Network Quantizer присваивает тип данных, который может избежать переполнения, покрыть область значений и позволить потерю значимости. Дополнительный знаковый бит требуется, чтобы представлять со знаком из значения.
Рисунок ниже показывает пример типа данных, который представляет биты от 23 к 2-3, включая знаковый бит.
После присвоения типа данных удалены любые биты за пределами того типа данных. Из-за присвоения меньшего типа данных фиксированной длины, потеря точности, переполнение и потеря значимости могут произойти для значений, которые не являются представимыми, по условию вводят.
В этом примере, значение 0.03125, страдает от потери значимости, таким образом, квантованное значение 0. Значение 2.1 несет некоторую потерю точности, таким образом, квантованное значение 2.125. Значение 16.250 больше, чем самое большое представимое значение типа данных, таким образом, это значение переполнение и квантованное значение насыщает к 15,874.
Отображения приложения Deep Network Quantizer эта гистограмма карты тепла для каждого настраиваемого параметра в слоях свертки и полносвязных слоях сети. Серые области гистограммы показывают биты, которые не могут быть представлены по условию тип.
calibrate
(Deep Learning Toolbox) | validate
(Deep Learning Toolbox) | dlquantizer
(Deep Learning Toolbox) | dlquantizationOptions
(Deep Learning Toolbox)