Профилируйте запуск вывода

Просмотрите сетевое предсказание и данные о производительности для слоев, модуля свертки и полностью соединенных модулей в вашей предварительно обученной серийной сети. Пример показывает, как получить предсказание и результаты профилировщика для сети VGG-19.

  1. Создайте объект класса Workflow при помощи dlhdl.Workflow класс.

  2. Установите предварительно обученную нейронную сеть для глубокого обучения и поток битов для объекта рабочего процесса.

  3. Создайте объект класса dlhdl.Target и задайте целевого поставщика и интерфейс.

  4. Чтобы развернуть сеть на заданной целевой плате FPGA, вызовите deploy метод для объекта рабочего процесса.

  5. Вызовите 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.

Смотрите также

| |

Похожие темы