exponenta event banner

genFunction

Создание функции MATLAB для моделирования неглубокой нейронной сети

Описание

Эта функция генерирует функцию MATLAB ® для моделирования неглубокой нейронной сети .genFunction не поддерживает сети глубокого обучения, такие как сверточные сети или сети LSTM. Дополнительные сведения о создании кода для глубокого обучения см. в разделе Создание кода для глубокого обучения.

пример

genFunction(net,pathname) генерирует полную автономную функцию MATLAB для моделирования нейронной сети, включая все настройки, значения веса и смещения, функции модулей и вычисления в одном файле. Результатом является автономный файл функции MATLAB. Эту функцию также можно использовать с инструментами MATLAB Compiler™ и MATLAB Coder™.

пример

genFunction(___,'MatrixOnly','yes') переопределяет представление ячейки/матрицы по умолчанию и вместо этого генерирует функцию, использующую только аргументы матрицы, совместимые с инструментами кодера MATLAB. Для статических сетей столбцы матрицы интерпретируются как независимые выборки. Для динамических сетей столбцы матрицы интерпретируются как последовательность временных шагов. Значение по умолчанию: 'no'.

genFunction(___,'ShowLinks','no') отключает поведение по умолчанию при отображении ссылок на созданную справку и исходный код. Значение по умолчанию: 'yes'.

Примеры

свернуть все

В этом примере показано, как создать функцию MATLAB и функцию MEX из статической нейронной сети.

Во-первых, обучить статическую сеть и вычислить ее выходные данные для данных обучения.

[x,t] = bodyfat_dataset;
bodyfatNet = feedforwardnet(10);
bodyfatNet = train(bodyfatNet,x,t);
y = bodyfatNet(x);

Затем создайте и протестируйте функцию MATLAB. Затем новая функция компилируется в общую/динамически связанную библиотеку с помощью mcc.

genFunction(bodyfatNet,'bodyfatFcn');
y2 = bodyfatFcn(x);
accuracy2 = max(abs(y-y2))
mcc -W lib:libBodyfat -T link:lib bodyfatFcn

Затем создайте другую версию функции MATLAB, которая поддерживает только аргументы матрицы (без массивов ячеек), и протестируйте функцию. Использование инструмента Кодер MATLAB codegen для создания MEX-функции, которая также тестируется.

genFunction(bodyfatNet,'bodyfatFcn','MatrixOnly','yes');
y3 = bodyfatFcn(x);
accuracy3 = max(abs(y-y3))
 
x1Type = coder.typeof(double(0),[13 Inf]); % Coder type of input 1
codegen bodyfatFcn.m -config:mex -o bodyfatCodeGen -args {x1Type}
y4 = bodyfatodeGen(x);
accuracy4 = max(abs(y-y4))

В этом примере показано, как создать функцию MATLAB и функцию MEX из динамической нейронной сети.

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

[x,t] = maglev_dataset;
maglevNet = narxnet(1:2,1:2,10);
[X,Xi,Ai,T] = preparets(maglevNet,x,{},t);
maglevNet = train(maglevNet,X,T,Xi,Ai);
[y,xf,af] = maglevNet(X,Xi,Ai);

Затем создайте и протестируйте функцию MATLAB. Используйте функцию для создания общей/динамически связанной библиотеки с помощью mcc.

genFunction(maglevNet,'maglevFcn');
[y2,xf,af] = maglevFcn(X,Xi,Ai);
accuracy2 = max(abs(cell2mat(y)-cell2mat(y2)))
mcc -W lib:libMaglev -T link:lib maglevFcn

Затем создайте другую версию функции MATLAB, которая поддерживает только аргументы матрицы (без массивов ячеек), и протестируйте функцию. Использование инструмента Кодер MATLAB codegen для создания MEX-функции, которая также тестируется.

genFunction(maglevNet,'maglevFcn','MatrixOnly','yes');
x1 = cell2mat(X(1,:)); % Convert each input to matrix
x2 = cell2mat(X(2,:));
xi1 = cell2mat(Xi(1,:)); % Convert each input state to matrix
xi2 = cell2mat(Xi(2,:));
[y3,xf1,xf2] = maglevFcn(x1,x2,xi1,xi2);
accuracy3 = max(abs(cell2mat(y)-y3))
 
x1Type = coder.typeof(double(0),[1 Inf]); % Coder type of input 1
x2Type = coder.typeof(double(0),[1 Inf]); % Coder type of input 2
xi1Type = coder.typeof(double(0),[1 2]); % Coder type of input 1 states
xi2Type = coder.typeof(double(0),[1 2]); % Coder type of input 2 states
codegen maglevFcn.m -config:mex -o maglevNetCodeGen -args {x1Type x2Type xi1Type xi2Type}
[y4,xf1,xf2] = maglevNetCodeGen(x1,x2,xi1,xi2);
dynamic_codegen_accuracy = max(abs(cell2mat(y)-y4))

Входные аргументы

свернуть все

Нейронная сеть, указанная как сетевой объект.

Пример: net = feedforwardnet(10);

Местоположение и имя созданного файла функции, указанного как символьная строка. Если не указано расширение имени файла .m, автоматически добавляется. Если путь к файлу не указан, по умолчанию используется текущая рабочая папка.

Пример: 'myFcn.m'

Типы данных: char

Расширенные возможности

.
Представлен в R2013b