Просмотрите сетевое предсказание и данные о производительности для слоев, модуля свертки и полностью соединенных модулей в вашей предварительно обученной серийной сети. Пример показывает, как получить предсказание и результаты профилировщика для сети 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