genFunction

Сгенерируйте функцию MATLAB для симуляции мелкой нейронной сети

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

Синтаксис

genFunction(net,pathname)
genFunction(___,'MatrixOnly','yes')
genFunction(___,'ShowLinks','no')

Описание

пример

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

пример

genFunction(___,'MatrixOnly','yes') заменяет обозначение ячейки/матрицы по умолчанию и вместо этого генерирует функцию, которая использует только матричные аргументы, совместимые с инструментами MATLAB Coder. Для статических сетей столбцы матрицы интерпретированы как независимые выборки. Для динамических сетей столбцы матрицы интерпретированы как серия временных шагов. Значением по умолчанию является '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 Coder 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 Coder 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

Для просмотра документации необходимо авторизоваться на сайте