В цифровом оборудовании номера сохраняются в двоичных словах. Двоичное слово является последовательностью бит с фиксированной длиной (1 и 0). Тип данных определяет, как аппаратные компоненты или программные функции интерпретируют эту последовательность 1 и 0. Числа представлены как масштабируемое целое число (обычно называемое данными с фиксированной точкой) или как типы данных с плавающей точкой.
Большинство предварительно обученных нейронных сетей и нейронных сетей, обученных с помощью Deep Learning Toolbox™, используют одноточные типы данных с плавающей точкой. Даже небольшие обученные нейронные сети требуют немалого объема памяти, и требуют оборудования, которое может выполнять арифметику с плавающей точкой. Эти ограничения могут препятствовать развертыванию возможностей глубокого обучения на микроконтроллерах малой мощности и FPGA.
Используя пакет поддержки Deep Learning Toolbox Model Quantization Library, можно квантовать сеть, чтобы использовать 8-битные масштабированные целочисленные типы данных.
Для квантования нейронной сети требуется графический процессор, пакет поддержки GPU Coder™ Interface for Глубокое Обучение Libraries и пакет поддержки Deep Learning Toolbox Model Quantization Library. Для использования графический процессор требуется CUDA® enabled NVIDIA® Графический процессор с вычислительными возможностями 6.1, 6.3 или выше.
Масштабированные 8-битные целочисленные типы данных имеют ограниченную точность и область значений по сравнению с одноточными типами данных с плавающей точкой. Существуют несколько числовых факторов при приведении числа от большего типа данных с плавающей точкой к меньшему типу данных фиксированной длины.
Потеря точности: Потеря точности является ошибкой округления. Когда происходит потеря точности, значение округляется до ближайшего числа, которое представимо типом данных. В случае галстука он округляет:
Положительные числа до ближайшего представимого значения в направлении положительной бесконечности.
Отрицательные числа до ближайшего представимого значения в направлении отрицательной бесконечности.
В MATLAB® можно выполнить этот тип округления, используя round
функция.
Underflow: Underflow является типом потерь точности. Нижние потоки возникают, когда значение меньше наименьшего значения, представляемого типом данных. Когда это происходит, значение достигает нуля.
Переполнение: Когда значение больше самого большого значения, которое может представлять тип данных, происходит переполнение. Когда происходит переполнение, значение достигает наибольшего значения, представляемого типом данных.
Используйте приложение Deep Network Quantizer для сбора и визуализации динамических областей значений весов и смещений слоев свертки и полносвязных слоев сети, а также активаций всех слоев в сети. Приложение присваивает масштабированный 8-битный целочисленный тип данных для весов, смещений и активаций слоев свертки сети. Приложение отображает гистограмму динамической области значений для каждого из этих параметров. Следующие шаги описывают, как производятся эти гистограммы.
Примите во внимание следующие значения, записанные для параметра во время выполнения сети.
Найдите идеальное двоичное представление каждого записанного значения параметра.
Самый значительный бит (MSB) является самым левым битом двоичного слова. Этот бит вносит наибольший вклад в значение числа. MSB для каждого значения подсвечивается желтым цветом.
Выравнивая двоичные слова, можно увидеть распределение бит, используемых записанными значениями параметра. Сумма MSB в каждом столбце, выделенная зеленым цветом, дает совокупное представление записанных значений.
Отображение счетчиков MSB каждого битового местоположения в виде тепловой карты. В этой тепловой карте более темные синие области соответствуют большему числу MSB в местоположении бита.
Программа присваивает тип данных, который может представлять местоположения битов, которые собирают наибольшую информацию. В этом примере программное обеспечение выбирает тип данных, который представляет биты из 23 к 2-3. Дополнительный бит знака необходим, чтобы представлять сигнальность значения.
После назначения типа данных все биты, не относящиеся к этому типу данных, удаляются. Из-за назначения меньшего типа данных фиксированной длины могут возникнуть потери точности, переполнение и нижнее течение для значений, которые не представимы типом данных.
В этом примере значение 0.03125 страдает от нижнего потока, поэтому квантованное значение равно 0. Значение 2.1 несет некоторые потери точности, поэтому квантованное значение составляет 2.125. Значение 16.250 больше, чем самое большое представимое значение типа данных, поэтому это значение переполнено, и квантованное значение достигает 15,874.
Приложение Deep Network Quantizer отображает эту гистограмму тепловой карты для каждого настраиваемого параметра в слоях свертки и полносвязных слоях сети. Серые области гистограммы показывают биты, которые не могут быть представлены типом данных.