Сделай Сам Свою Работу на 5

Построение моделей нейронных сетей

 

GENSIM Формирование S-модели нейронной сети

Синтаксис:

gensim(net,ST)

Описание:

Функция gensim(net, ST) формирует S-модель нейронной сети с именем net для ее запуска в среде системы Simulink; аргумент ST задает такт дискретности, который необходим для моделирования динамических сетей. Если сеть не имеет ЛЗ, т. е. является статической системой, то значение ST следует задать равным –1, что соответствует неопределенному такту дискретности.

Пример:

Создадим однослойную линейную сеть, реализующую следующее соотношение
между входом и целью:

P = [1 2 3 4 5];

T = [1 3 5 7 9];

net = newlind(P,T);

Для того чтобы сформировать S-модель этой сети, используем команду

gensim(net,–1) % Рис.11.84

Рис. 11.84

В результате откроется окно системы Simulink с S-моделью нейронной сети, которая включает блок входа, блок нейронной сети и блок осциллографа (рис. 11.84).

Нажатие кнопки Toggle model browser (Включить средство просмотра модели) переводит окно системы Simulink в другое состояние (рис. 11.85).

Рис. 11.85

Окно Simulink дополняется средством просмотра модели, расположенным слева
от схемы сети. Включение кнопки Show library links и соседней с ней Browse masked subsystems позволяет раскрыть описание структуры нейронной сети и просматривать ее элементы простым выбором того или иного элемента структуры. Рис. 11.86, аж, поясняет эту возможность.

а
б
в
г
д
е
ж

Рис. 11.86

Для подготовки S-модели нейронной сети (см. рис. 11.85) к моделированию следует ввести значение входного сигнала, активизируя двойным щелчком левой клавиши мыши блок Input1. Блок входа позволяет ввести значение некоторой константы; введем значение, равное 2 (рис. 11.87, а).

а б

Рис. 11.87

Теперь можно выполнить моделирование нейронной сети, выбирая опцию Start из меню Simulation либо активизируя кнопку Start simulation на инструментальной панели. После выполнения моделирования активизируем блок Scope, который позволяет увидеть отклик сети на входное воздействие (рис. 11.87, б). Этот отклик равен постоянному значению 3 и свидетельствует о том, что данная нейронная сеть относится к классу статических систем.



Теперь рассмотрим пример моделирования динамической сети. Обратимся к сети Элмана, рассмотренной в гл. 8 и связанной с детектированием амплитуды гармонического сигнала.

Сформируем и обучим сеть Элмана:

p1 = sin(1:20);

p2 = sin(1:20)*2;

t1 = ones(1,20);

t2 = ones(1,20)*2;

p = [p1 p2 p1 p2];

t = [t1 t2 t1 t2];

Pseq = con2seq(p);

Tseq = con2seq(t);

R = 1; % Число элементов входа

S2 = 1; % Число нейронов выходного слоя

S1 = 10; % Число нейронов рекуррентного слоя

net = newelm([–2 2],[S1 S2],{'tansig','purelin'},'traingdx');

net.trainParam.epochs = 1000;

net.trainParam.show = 25;

net.trainParam.goal = 0.01;

[net,tr] = train(net,Pseq,Tseq);

Создадим S-модель этой сети, дополнив ее блоком To Workspace, который позволяет записать результаты моделирования в виде массива yout в рабочую область системы MATLAB (рис.11.88, а):

gensim(net)

а б

Рис. 11.88

Структурная схема сети Элмана показана на рис. 11.88, б и представляет двухслойную сеть с обратной связью в первом слое.

Задав значение входного сигнала (рис. 11.89, а), выполним моделирование сети и выведем результат в виде графика изменения выхода сети (рис. 11.89, б), используя данные из рабочей области системы MATLAB:

stairs(tout(1:5:end),yout) % Рис.11.89,б

а б

Рис. 11.89

Сеть Элмана приходит в установившееся состояние к 10-му такту времени.

Справка:

help network/gensim

Сопутствующие функции: GENSIMM.

 

GENSIMM Формирование М-файла для моделирования нейронной сети

Синтаксис:

<имя_файла> = gensimm(net)

Описание:

Функция <имя_файла> = gensimm(net) генерирует М-файл для моделирования нейронной сети и размещает его в каталоге C:\WINDOWS\TEMP\matlab_nnet\<имя_М-файла>; этот путь доступа соответствует строковой переменной с именем <имя_файла>.

Пример:

Сформируем М-файл для S-модели сети Элмана:

p1 = sin(1:20);

p2 = sin(1:20)*2;

t1 = ones(1,20);

t2 = ones(1,20)*2;

p = [p1 p2 p1 p2];

t = [t1 t2 t1 t2];

Pseq = con2seq(p);

Tseq = con2seq(t);

R = 1; % Число элементов входа

S2 = 1; % Число нейронов выходного слоя

S1 = 10; % Число нейронов рекуррентного слоя

net = newelm([–2 2],[S1 S2],{'tansig','purelin'},'traingdx');

netelm = gensimm(net)

netelm =C:\WINDOWS\TEMP\matlab_nnet\tp134040.m

Выведем на экран терминала текст М-файла:

type(netelm)

function [perf,El,Ac,N,LWZ,IWZ,BZ] = tp134040(net,Pd,Ai,Tl,Q,TS)

%TP134040 Temporary network simulation file.

%

% [perf,El,Ac,N,LWZ,IWZ,BZ] = tp134040(net,Pd,Ai,Tl,Q,TS)

% net – Neural network.

% Pd – numInputs–by–numLayers–by–TS cell array of delayed inputs.

% Ai – numLayers–by–numLayerDelays cell array of layer delay conditions.

% Tl – numLayers–by–TS cell array of layer targets.

% Q – number of concurrent simulations.

% TS – number of time steps.

% returns:

% perf – network performance:

% El – numLayers–by–TS cell array of layer errors:

% Ac – numLayers–by–(numLayerDelays+TS) cell array of layer outputs:

% N – numLayers–by–TS cell array of net inputs:

% LWZ – numLayers–by–numLayers–by–TS cell array of weighed layer outputs:

% IWZ – numLayers–by–numInputs–by–TS cell array of weighed inputs:

% BZ – numLayers–by–1 cell array of expanded biases:

 

% Input weights

IW1_1 = net.IW{1,1};

 

% Layer weights

LW1_1 = net.LW{1,1};

LW2_1 = net.LW{2,1};

 

% Biases

QOnes = ones(1,Q);

B1 = net.b{1}(:,QOnes);

B2 = net.b{2}(:,QOnes);

BZ = {B1; B2};

 

% Signals

El = cell(2,TS);

Ac = [Ai cell(2,TS)];

N = cell(2,TS);

IWZ = cell(2,1,TS);

LWZ = cell(2,2,TS);

 

for ts=1:TS;

tsc = ts + 1;

 

% Simulate Layer 1

IWZ{1,1,ts} = IW1_1*Pd{1,1,ts};

LWZ{1,1,ts} = LW1_1*Ac{1,tsc–1};

N{1,ts} = IWZ{1,1,ts}+LWZ{1,1,ts}+B1;

Ac{1,tsc} = tansig(N{1,ts});

 

% Simulate Layer 2

LWZ{2,1,ts} = LW2_1*Ac{1,tsc};

N{2,ts} = LWZ{2,1,ts}+B2;

Ac{2,tsc} = N{2,ts};

El{2,ts} = Tl{2,ts} – Ac{2,tsc};

end;

 

perf = mse(El,net,net.trainParam);

Сформированный М-файл имеет следующие входные и выходные аргументы.

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

net – имя нейронной сети;

Pd – массив ячеек задержанных входов размера numInputs´numLayers´TS;

Ai – массив ячеек начальных условий на ЛЗ размера numLayers´numLayerDelays;

Tl – массив ячеек векторов целей для слоя размера numLayers´TS;

Q – число выборок;

TS – длина выборки по времени.

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

perf – значение функционала качества;

El – массив ячеек ошибок слоя размера numLayers´TS;

Ac – массив ячеек выходов слоя размера numLayers´(numLayerDelays+TS);

N – массив ячеек входов размера numLayers´TS;

LWZ – массив ячеек взвешенных выходов слоя размера numLayers´numLayers´TS;

IWZ – массив ячеек взвешенных входов слоя размера numLayers´numInputs´TS;

BZ – массив ячеек для смещений размера numLayers´1.

Последующие операторы М-файла позволяют видеть, как моделируется нейронная сеть.

Сопутствующие функции: SIM.


Индексный указатель



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.