predict

Класс: dlhdl.Workflow
Пакет: dlhdl

Запустите вывод в развернутой сети и профилируйте скорость нейронной сети, развернутой на заданном целевом устройстве

Описание

пример

predict(imds) предсказывает ответы для данных изображения в imds при помощи нейронной сети для глубокого обучения, которую вы задали в dlhdl.Workflow класс для развертывания на заданной требуемой плате и возвращает результаты.

predict(imds, Name,Value) предсказывает ответы для данных изображения в imds при помощи нейронной сети для глубокого обучения, которую вы задали при помощи dlhdl.Workflow класс для развертывания на заданных требуемых платах и возвращает результаты с одним или несколькими аргументами, заданными дополнительными аргументами пары "имя-значение".

Примеры

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

Примечание

Прежде чем вы запуститесь predict функционируйте, убедитесь, что ваш хост - компьютер соединяется с платой целевого устройства. Для получения дополнительной информации смотрите, Конфигурируют специфичную для Совета информацию о Setup.

Используйте это изображение, чтобы запустить код:

% Save the pretrained SeriesNetwork object
snet = vgg19;

% Create a Target object and define the interface to the target board
hTarget = dlhdl.Target('Intel');

% Create a workflow object for the SeriesNetwork and using the FPFA bitstream 
hW = dlhdl.Workflow('Network', snet, 'Bitstream', 'arria10soc_single','Target',hTarget);

% Load input images and resize them according to the network specifications
image = imread('zebra.jpeg');
inputImg = imresize(image, [224, 224]);
imshow(inputImg);
imIn = single(inputImg);
% Deploy the workflow object
hW.deploy;
% Predict the outcome and optionally profile the results to measure performance.
[prediction, speed] = hW.predict(imIn,'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'

 

Получите результаты предсказания для квантованной сети LogoNet

Примечание

Прежде чем вы запуститесь predict функционируйте, убедитесь, что ваш хост - компьютер соединяется с платой целевого устройства. Для получения дополнительной информации смотрите, Конфигурируют специфичную для Совета информацию о Setup.

Создайте файл в своей текущей рабочей директории под названием getLogoNetwork.m. Введите эти линии в файл:

function net = getLogoNetwork()
    data = getLogoData();
    net  = data.convnet;
end

function data = getLogoData()
    if ~isfile('LogoNet.mat')
        url = 'https://www.mathworks.com/supportfiles/gpucoder/cnn_models/logo_detection/LogoNet.mat';
        websave('LogoNet.mat',url);
    end
    data = load('LogoNet.mat');
end

Используйте это изображение, чтобы запустить код:

Чтобы квантовать сеть, вам нужны продукты, перечисленные под FPGA в необходимых условиях рабочего процесса квантования.

% Save the pretrained SeriesNetwork object
snet = getLogoNetwork();

% Create a Target object and define the interface to the target board
hTarget = dlhdl.Target('Xilinx','Interface','Ethernet');

% Create a Quantized Network Object

dlquantObj = dlquantizer(snet,'ExecutionEnvironment','FPGA');
Image = imageDatastore('heineken.png','Labels','Heineken');
dlquantObj.calibrate(Image);

% Create a workflow object for the SeriesNetwork and using the FPFA bitstream 
hW = dlhdl.Workflow('Network', dlquantObj, 'Bitstream', 'zcu102_int8','Target',hTarget);

% Load input images and resize them according to the network specifications
image = imread('heineken.png');
inputImg = imresize(image, [227, 227]);
imshow(inputImg);
imIn = single(inputImg);
% Deploy the workflow object
hW.deploy;
% Predict the outcome and optionally profile the results to measure performance.
[prediction, speed] = hW.predict(imIn,'Profile','on');
[val, idx] = max(prediction);
snet.Layers(end).ClassNames{idx}

### Loading weights to FC Processor.
### FC Weights loaded. Current time is 12-Jun-2020 16:55:34
### FPGA bitstream programming has been skipped as the same bitstream is already loaded on the target FPGA.
### Deep learning network programming has been skipped as the same network is already loaded on the target FPGA.
### Finished writing input activations.
### Running single input activations.


              Deep Learning Processor Profiler Performance Results

                   LastLayerLatency(cycles)   LastLayerLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                   13604105                  0.04535                       1           13604146             22.1
    conv_module           12033763                  0.04011 
        conv_1             3339984                  0.01113 
        maxpool_1          1490805                  0.00497 
        conv_2             2866483                  0.00955 
        maxpool_2           574102                  0.00191 
        conv_3             2432474                  0.00811 
        maxpool_3           700552                  0.00234 
        conv_4              617505                  0.00206 
        maxpool_4            11951                  0.00004 
    fc_module              1570342                  0.00523 
        fc_1                937715                  0.00313 
        fc_2                599341                  0.00200 
        fc_3                 33284                  0.00011 
 * The clock frequency of the DL processor is: 300MHz

Входные параметры

развернуть все

Введите изображение, измененное, чтобы совпадать с входным размером слоя изображений нейронной сети для глубокого обучения.

Пример: Чтобы считать входное изображение, измените размер его к 227x227, и преобразуйте его в одно использование:

Используйте это изображение, чтобы запустить код:

image = imread('heineken.png');
inputImg = imresize(image, [227, 227]);
imIn = single(inputImg)

Пример: imIn

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример:

Отметьте, чтобы возвратить профильные результаты для нейронной сети для глубокого обучения, развернутой на требуемой плате.

Пример: 'Profile', 'On'

Введенный в R2020b