Просмотрите сетевое предсказание и данные о производительности для слоев, модуля свертки и полностью соединенных модулей в вашей предварительно обученной серийной сети. Пример показывает, как получить предсказание и результаты профилировщика для сети VGG-19.
Создайте объект класса Workflow
при помощи dlhdl.Workflow
класс.
Установите предварительно обученную нейронную сеть для глубокого обучения и поток битов для объекта рабочего процесса.
Создайте объект класса dlhdl.Target
и задайте целевого поставщика и интерфейс.
Чтобы развернуть сеть на заданной целевой плате FPGA, вызовите deploy
метод для объекта рабочего процесса.
Вызовите predict
функция для объекта рабочего процесса. Обеспечьте массив изображений как InputImage
параметр. Обеспечьте аргументы, чтобы включить профилировщик.
Метки, классифицирующие изображения, хранятся в структуре struct
и отображенный на экране. Эксплуатационные параметры скорости и задержки возвращены в структуре struct
.
Используйте это изображение, чтобы запустить код:
snet = vgg19; hT = dlhdl.Target('Intel'); hW = dlhdl.Workflow('Net', snet, 'Bitstream', 'arria10soc_single','Target',hT); hW.deploy; image = imread('zebra.jpeg'); inputImg = imresize(image, [224, 224]); imshow(inputImg); [prediction, speed] = hW.predict(single(inputImg),'Profile','on'); [val, idx] = max(prediction); snet.Layers(end).ClassNames{idx}
### Finished writing input activations. ### Running single input activations. Deep Learning Processor Profiler Performance Results LastLayerLatency(cycles) LastLayerLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 166206640 1.10804 1 166206873 0.9 conv_module 156100737 1.04067 conv1_1 2174602 0.01450 conv1_2 15580687 0.10387 pool1 1976185 0.01317 conv2_1 7534356 0.05023 conv2_2 14623885 0.09749 pool2 1171628 0.00781 conv3_1 7540868 0.05027 conv3_2 14093791 0.09396 conv3_3 14093717 0.09396 conv3_4 14094381 0.09396 pool3 766669 0.00511 conv4_1 6999620 0.04666 conv4_2 13725380 0.09150 conv4_3 13724671 0.09150 conv4_4 13725125 0.09150 pool4 465360 0.00310 conv5_1 3424060 0.02283 conv5_2 3423759 0.02283 conv5_3 3424758 0.02283 conv5_4 3424461 0.02283 pool5 113010 0.00075 fc_module 10105903 0.06737 fc6 8397997 0.05599 fc7 1370215 0.00913 fc8 337689 0.00225 * The clock frequency of the DL processor is: 150MHz ans = 'zebra'
Данные профилировщика возвращают эти параметры и их значения:
LastLayerLatency(cycles)
- Общее количество тактов для слоя или выполнения модуля.
Тактовая частота - информация о Тактовой частоте получена из потока битов, который использовался, чтобы развернуть сеть в требуемую плату. Например, профилировщик возвращает * The clock frequency of the DL processor is: 150MHz
. Тактовая частота 150 МГц получена из arria10soc_single
поток битов.
LastLayerLatency(seconds)
- Общее количество секунд для слоя или выполнения модуля. Общее время вычисляется как LastLayerLatency(cycles)/Clock Frequency
. Например, conv_module
LastLayerLatency(seconds)
вычисляется как 156100737/(150*10^6)
.
FramesNum
- Общее количество входных кадров к сети. Это значение будет использоваться в вычислении Frames/s
.
Total Latency
- Общее количество тактов, чтобы выполнить все слоя сети и модули для FramesNum
.
Frames/s
- Количество систем координат обрабатывается за одну секунду сетью. Общий Frames/s
вычисляется как (FramesNum*Clock Frequency)/Total Latency
. Например, Frames/s
в примере вычисляется как (1*150*10^6)/166206873
.
dlhdl.Target
| dlhdl.Workflow
| predict