Просмотрите данные предсказания и эффективности сети для слоев, модуля свертки и полносвязных модулей в предварительно обученной последовательной сети. Пример показывает, как получить результаты предсказания и профилировщика для ResNet-18 сети.
Создайте объект класса Workflow при помощи dlhdl.Workflow класс.
Установите предварительно обученные нейронные сети для глубокого обучения и битовый поток для объекта рабочего процесса.
Создайте объект класса dlhdl.Target и укажите целевого поставщика и интерфейс.
Чтобы развернуть сеть на указанной целевой плате FPGA, вызовите deploy метод для объекта рабочего процесса.
Вызовите predict функция для объекта рабочего процесса. Предоставьте массив изображений как InputImage параметр. Укажите аргументы для включения профилировщика.
Метки, классифицирующие изображения, хранятся в структуре struct и отобразится на экране. Параметры эффективности скорости и задержки возвращаются в структуре struct.
Используйте это изображение, чтобы запустить код:

snet = resnet18; hT = dlhdl.Target('Xilinx','Interface','Ethernet'); hW = dlhdl.Workflow('Net', snet, 'Bitstream', 'zcu102_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
LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s
------------- ------------- --------- --------- ---------
Network 23659630 0.10754 1 23659630 9.3
conv1 2224115 0.01011
pool1 572867 0.00260
res2a_branch2a 972699 0.00442
res2a_branch2b 972568 0.00442
res2a 209312 0.00095
res2b_branch2a 972733 0.00442
res2b_branch2b 973022 0.00442
res2b 209736 0.00095
res3a_branch2a 747507 0.00340
res3a_branch2b 904291 0.00411
res3a_branch1 538763 0.00245
res3a 104750 0.00048
res3b_branch2a 904389 0.00411
res3b_branch2b 904367 0.00411
res3b 104886 0.00048
res4a_branch2a 485682 0.00221
res4a_branch2b 880001 0.00400
res4a_branch1 486429 0.00221
res4a 52628 0.00024
res4b_branch2a 880053 0.00400
res4b_branch2b 880035 0.00400
res4b 52478 0.00024
res5a_branch2a 1056299 0.00480
res5a_branch2b 2056857 0.00935
res5a_branch1 1056510 0.00480
res5a 26170 0.00012
res5b_branch2a 2057203 0.00935
res5b_branch2b 2057659 0.00935
res5b 26381 0.00012
pool5 71405 0.00032
fc1000 216155 0.00098
* The clock frequency of the DL processor is: 220MHz
Данные профилировщика возвращают эти параметры и их значения:
LastFrameLatency(cycles)- Общее количество тактовых импульсов для выполнения предыдущей системы координат.
Частота синхроимпульса - информация тактовой частоты извлекается из битового потока, который использовался для развертывания сети на целевой плате. Для примера профилировщик возвратов * The clock frequency of the DL processor is: 220MHz. Тактовая частота 220 МГц извлекается из zcu102_single битовый поток.
LastFrameLatency(seconds)- Общее количество секунд для выполнения предыдущей системы координат. Общее время вычисляется как LastFrameLatency(cycles)/Clock Frequency. Для примера conv_module
LastFrameLatency(seconds) вычисляется как 2224115/(220*10^6).
FramesNum- Общее количество входных кадров в сеть. Это значение будет использоваться при вычислении Frames/s.
Total Latency- Общее количество тактов для выполнения всех слоев сети и модулей для FramesNum.
Frames/s- Количество систем координат, обработанных сетью за одну секунду. Общая Frames/s вычисляется как (FramesNum*Clock Frequency)/Total Latency. Для примера Frames/s в примере вычисляется как (1*220*10^6)/23659630.
dlhdl.Target | dlhdl.Workflow | predict