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

Этот пример сравнивает результаты обученной модели классификации нейронных сетей в 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%