Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДЗ по нейронным сетям.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.61 Mб
Скачать

Моделирование нейронной сети

Функция sim - моделирует нейронную сеть

Функция MatLab

function[Y,Pf,Af,E,perf] = SIM(net,P,Pi,Ai,T)

net

Сеть

P

Входы сети

Pi

Начальные задержки входов, по умолчанию – нули

Ai

Начальные задержки слоев, по умолчанию – нули

T

Целевые значения, по умолчанию – нули

Y

Выходы сети

Pf

Конечные входные задержки

Af

Конечные задержки слоев

E

Ошибки сети

perf

Параметр функционирования сети

function[Y,Pf,Af,E,perf] = sim(net,P,Pi,Ai,T)

if ~isa(net,'network')

error('First argument is not a network.');

end

if length(net.hint.noWeights)

error(sprintf('Layer %g has no weights.',net.hint.noWeights(1)))

end

switch nargin

case 2,[err,P,Pi,Ai,T,Q,TS,matrixForm] = simargs(net,P);

%SIMULATE NETWORK

%----------------

%Network outputs, final inputs

Y = Ac(net.hint.outputInd,net.numLayerDelays+[1:TS]);

El = calce(net,Ac,Tl,TS);

E = El(net.hint.targetInd,:);

%FORMAT OUTPUT ARGUMENTS

%-----------------------

if (matrixForm)

Y = cell2mat(Y);

if(net.numOutputs==0)

Y = zeros(size(Y,1),Q);

end

if nargout >= 4

E = cell2mat(E);

end

end

end

end

%===============================================

function[s2] = expandrows(s,ind,rows)

s2 = cell(rows,size(s,2));

s2(ind,:) = s;

%===============================================

function[err,P,Pi,Ai,T,Q,TS,matrixForm] = simargs(net,P,Pi,Ai,T);

err='';

%Check signals: all matrices or all cell arrays

%Change empty matrices/arrays to proper form

switch class(P)

case 'cell', matrixForm = 0; name = 'cell array'; default = {};

case 'double',matrixForm = 1; name = 'matrix'; default = [];

otherwise,err = 'P must be a matrix or cell array.'; return

end

%Check Matrices, Matrices -> Cell Arrays

if (matrixForm)

if (net.numInputs == 0)&all(size(P) == [1 1])

Q = P;

P = zeros(0,Q);

else

Q = size(P,2);

end

TS = 1;

[err,P] = format(net,P,Q);

if length(err)

return

end

%Check Cell Arrays

else

if (net.numInputs == 0)&all(size(P) == [1 2])

Q = P{1};

TS = P{2};

P = cell(0,TS);

else

TS = size(P,2);

if prod(size(P))

Q = size(P{1,1},2);

elseif prod(size(Pi))

Q = size(Pi{1,1},2);

elseif prod(size(Ai))

Q = size(Ai{1,1},2);

else

Q = 1;

end

end

[err] = checkp(net,P,Q,TS); if length(err), return, end

[err,Pi] = checkpi(net,Pi,Q); if length(err), return, end

[err,Ai] = checkai(net,Ai,TS); if length(err), return, end

[err,T] = checkt(net,T,Q,TS); if length(err), return, end

end

end

Для примера подадим на вход обученной сети зашумленный символ «а»

noisy1 = alphabet(:,1)+randn(256,1)*0.2;

A1 = sim(net,noisy1);

A1_1 = compet(A1);

answer = find(compet(A1) == 1);

figure

plot(x,A1,'r-',x,A1,'ro');

Выход сети:

Рисунок 3 Значение нейронов выходного слоя сети при предъявлении на ее вход символа «а»