genFunction

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

Описание

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

пример

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