The compile
метод:
Генерирует карту внешнего адреса памяти.
Оптимизирует сети для развертывания.
Разделяет сети на ножки для развертывания.
Чтобы интегрировать сгенерированное IP-ядро процессора глубокого обучения в ваш системный исходный проект, используйте compile
выходы метода.
Когда вы создаете dlhdl.Workflow
объект и использовать compile
способ, формируют карту внешнего адреса памяти. The compile
метод генерирует эти смещения адреса на основе нейронной сети для глубокого обучения и целевой платы: Используйте карту адреса для:
Загрузите входы сети.
Загрузите инструкции IP-ядра процессора глубокого обучения.
Загрузка весов и смещений сети.
Получение результатов выхода.
The compile
метод генерирует эти смещения адреса:
InputDataOffset
- Смещение адреса, где загружаются входные изображения.
OutputResultOffset
- Выходные результаты записываются начиная с этого смещения адреса.
SchedulerDataOffset
- Смещение адреса, где записываются данные активации во время выполнения планировщика. Данные активации во время выполнения включают информацию, такую как передача обслуживания между различными ядрами процессора глубокого обучения, инструкции для различных ядер процессора глубокого обучения и так далее.
SystemBufferOffset
- Не используйте адрес памяти, начиная с этого смещения и заканчивая в начале InstructionDataOffset
.
InstructionDataOffset
- Все инструкции по строению слоя (LC) записываются начиная с этого смещения адреса.
ConvWeightDataOffset
- Все веса модулей конв-обработки записываются начиная с этого смещения адреса.
FCWeightDataOffset
- Все веса полносвязных модулей обработки (FC) записываются начиная с этого смещения адреса.
EndOffset
- смещение конца памяти DDR для сгенерированного процессора глубокого обучения IP.
В примере отображается карта внешней памяти, сгенерированная для сети распознавания ResNet-18, которая использует zcu102_single
битовый поток. См., Скомпилируйте сетевой объект diagnet.
compile
функция оптимизирует сети для развертывания путем идентификации слоев сети, которые можно выполнить за одну операцию на оборудовании и затем объединить их вместе. compile
функция выполняет эти слои слияния и оптимизации:
Нормализация партии . (batchNormalizationLayer
) и 2-D слой свертки (convolution2dLayer
).
2-D нулевой слой заполнения (nnet.keras.layer.ZeroPadding2dLayer
) и 2-D слой свертки (convolution2dLayer
).
2-D нулевой слой заполнения (nnet.keras.layer.ZeroPadding2dLayer
) и 2-D максимального слоя опроса (maxPooling2dLayer
).
Этот выход кода является примером оптимизации компилятора в журнале компилятора.
Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer'
compile
функция разделяет сеть на ноги во время компиляции. Ветвь является подмножеством сети, которую можно преобразовать в последовательную сеть. compile
функция группирует ноги на основе выходного формата слоев. Формат выхода уровня определяется как формат данных модуля глубокого обучения, который обрабатывает этот уровень. Формат выхода слоев - conv, fc или adder. Для примера, на этом изображении, compile
функция группирует все слои в Leg 2
вместе, потому что они имеют формат выхода conv. Сведения о выходных форматах слоев см. в разделе Поддерживаемые слои.
На этом изображении показаны ноги ResNet-18 сети, созданной compile
функция и ножки, подсвеченные в архитектуре ResNet-18 слоя.