Классификация цифр с типами данных полуточности

Этот пример сравнивает результаты обученной модели классификации нейронных сетей в Simulink® в двойной точности и половине точности. Модель классифицирует изображения от MNIST рукописный набор данных цифры.

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

load trainImage.mat
testSetMaxIdx = 10;

Симулируйте модель с типами с двойной точностью

Эта модель использует numerictype объекты задать параметр, сигнал, и блокировать типы выходных данных. Чтобы симулировать модель с помощью типов данных с двойной точностью, задайте numerictype объекты в базовом рабочем пространстве и наборе тип данных объектов к 'double'. Симулируйте модель.

floatType = numerictype('double');
activationType = numerictype('double');

model = 'ex_imagerecog_half.slx';
open_system(model);
sim(model);

Результаты симуляции с двойной точностью в 100%-й точности классификации.

[c, ~] = confusion(ttestsubset(:,1:testSetMaxIdx), ytest.Data(2:testSetMaxIdx+1,:)');
fprintf('Percentage Correct Classification   : %f%%\n', 100*(1-c));
fprintf('Percentage Incorrect Classification : %f%%\n', 100*c);
Percentage Correct Classification   : 100.000000%
Percentage Incorrect Classification : 0.000000%

Симулируйте модель с типами полуточности

Чтобы симулировать модель в половине точности, переопределите numerictype объекты и набор их тип данных к 'half'. Симулируйте модель.

floatType = numerictype('half');
activationType = numerictype('single');
sim(model);

В этом примере нет никакой потери точности при использовании типа данных полуточности. Симуляция полуточности также приводит к 100%-й точности классификации.

[c, ~] = confusion(ttestsubset(:,1:testSetMaxIdx), ytest.Data(2:testSetMaxIdx+1,:)');
fprintf('Running Simulation with half precision :\n');
fprintf('Percentage Correct Classification   : %f%%\n', 100*(1-c));
fprintf('Percentage Incorrect Classification : %f%%\n', 100*c);
Running Simulation with half precision :
Percentage Correct Classification   : 100.000000%
Percentage Incorrect Classification : 0.000000%