Нейросеревые модели

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

ние начальных весов;.l{1} = 0; % - присваивание начального смещения;.inputWeughts{1,1}.learnParam.lr = 0.2;= 10;= 1; % - для подсчета количества циклов;EE > 0.0017176

[net, a{i}, e{i}, pf] = adapt(net, P, T);(i, :) = net .IW{1,1};= mse(e{i});(i) = EE;= i + 1;;

11. Проанализировать результаты и сделать их сравнение с результатами для последовательного представления обучающей последовательности:

W(63, :)mat(a{63})= mse(e{63})(e{1})

12. Для полученных результатов построить графики и сравнить их с предыдущими:

subplot(3,1,1)i = 1:1:63, plot(i, cell2mat(a{i}), ?k?),on;(??), ylabel(?Выходы a(i??), grid(3,1,2)(0:63, [[0 0]; W], ?k?)(??), ylabel(?Веса входов W(i)?), grid(3,1,3)(1:63, ee, ?+k?)(?Циклы?), ylabel(?Ошибка?), grid

Задание 2. Адаптировать параметры однослойной динамической сети с одним входом и одной линией задержки для аппроксимации рекуррентного соотношения y(t) = 2 p(t) + p(t ?1) , выполнив следующие действия:

. Так как для динамических сетей групповой способ представления обучающего множества не используется, подготовить данные для последовательной адаптации в виде массивов ячеек значений входа и цели:

P = {-1/2 1/3 1/5 1/4); % - значения входа p(t);= {-1 1/6 11/15 7/10}; % - значения цели y(t).

2. Выполнить адаптацию и построение графиков

net = newlin([-1 1], 1, [0 1], 0.5); % - help(newlin);= {0}; % - начальное условие для линии задержки;.IW{1} = [0 0]; % - веса для основного и задержанного входов;.biasConnect = 0; % - значение смещения;= 10; i = 1;EE > 0.0001

[net, a{i}, e{i}, pf] = adapt(net, P, T);(i, :) = net.IW{1,1};= mse(e{i});(i) = EE;= i +1;(22, :){22}(3,1,1)i = 1:1:22, plot(i, cell2mat(a{i}), ?k?)on;(??), ylabel(?Выходы a(i)?), grid(3,1,2)(0:22,[[0 0]; W], ?k?)(??), ylabel(Веса входов W(i)?), grid(3,1,3)(1:22, ee, ?+k?)(?Циклы ?), ylabel(?Ошибка?)grid

Задание 3. Обучить нейронную сеть, для которой модель и зависимость выхода от входов приведены в задании 1, выполнив команды и используя последовательный и групповой способы представления обучающей последовательности:

а) для последовательного способа:

net=newlin ([-1 1; -1 1], 1, 0, 0);.IW{1}= [0 0];.b{1} = 0;= {[-1 1][-1/3; 1/4][1/2 0][1/6;2/3]};= {-1 -5/12 1 1}.inputWeights{1, 1}.learnParam.lr = 0.2;.biases{1}.learnParam.lr = 0;.trainParam.epochs = 30;=train (net,P,T);= net1.IW{1} % - параметры после обучения:= sim(net1,p)= mse([Y{:}] - [T{:}]) % - ошибка 1.3817*e-003

б) для группового способа:

P = [-1 -1/3; 1/2 1/6; 1 1/4 0 2/3];= [-1 -5/12 1 1]=train (net,P,T);= net1.IW{1} % - параметры после обучения:= sim(net1,P)= mse(y-T) % - та же ошибка 1.3817*e-003

Задание 4. Обучить динамическую линейную сеть, рассмотренную во 2-м задании и сравнить результаты, выполнив следующие команды:

net = newlin([-1 1] , 1,[0 1], 0.5)= {0} % - начальное условие линии задержки;.IW{1} = [0 0] % - начальные веса входов;.biasConnect = 0; % - смещение отсутствует;.trainParam.epochs = 22;= {-1/2 1/3 1/5 1/4}; % - вектор входа;= {-1 1/6 11/15 7/10}; % - вектор цели;= train(net, P, T, Pi); % - обучение сети;= net1.IW{1} % - веса после обучения сети;= sim(net1, P); % - моделирование новой сети;= mse( [Y{:}] - [T{:}] ) % - ошибка = 3.6514е-005.

Задание 5. Создать и инициализировать трёхслойную сеть с двумя входами для последующего обучения сети методом обратного распространения ошибки, выполнив следующие действия:

. Создать шаблон сети:

net5 = network(2, ... % - число входов;

, ... % - число слоёв сети;

[1; 1; 1], ... % - связь смещений;

[1 1 ; 0 0; 0 0], ... % - связь входов;

[ 0 0 0 ; 1 0 0 ; 0 1 0], ... % - связь слоёв;

[0 0 1], ... % - связь выходов;

[0 0 1] ); % - связь целей.

2. Настроить параметры сети для инициализации с помощью алгоритма Нгуена-Видроу для обеспечения возможности использования метода обратного распространения:

net5.initFcn = ?initlay?; % - для сети;.layers{1}.initFcn = ?initnw?; % - для 1-го слоя;.layers{2}.initFcn = ?initnw?; % - для 2-го слоя;.layers{3}.initFcn = ?initnw?; % - для 3-го слоя.

3. Проинициализировать сеть для её последующего обучения методом обратного распространения ошибки:

net5 = init(net5);.IW{1, 1} % - матрица весов для 1-го входа;.IW{1, 2} % - матрица весов для 2-го входа;.LW{2, 1} % - матрица весов для 2-го слоя;.LW{3, 2} % - матрица весов для 3-го слоя;.b{1} % - матрица смещения для 1-го слоя;.b{2} % - матрица смещения для 2-го слоя;.b{3} % - матрица смещения для 3-го слоя.

4. Промоделировать сеть с начальными значениями весов и смещений:

P = [0.5 1 ; 1 0.5]; % - значения входных векторов;= sim(net5) % - моделирование сети.

Задание 6. Создать и инициализировать трёхслойную сеть с двумя входами для последующего обучения различными методами, выполнив следующие действия:

. Создать шаблон сети, воспользовавшись шаблоном net5:

net6 = net5; % - создание новой копии сети;= revert(net5); % - возврат к настройке параметров по умолчанию.

2. Настроить параметры сети с помощью функции инициализации нулевых значений весов и смещений initzero:

net6.initFcn = ?initlay?;.layers{1}.initFcn = ?initnw?;.layers{2}.initFcn = ?initnw?;.layers{3}.initFcn = ?initnw?;.inputWeights{1 ,1}.initFcn = ?initzero?;.inputWeights{1 ,2}.initFcn = ?initzero?;.layerWeights{2 ,1}.initFcn = ?initzero?;.layerWeights{3 ,2}.initFcn = ?initzero?;.biases{1}.initFcn = ?initzero?;.biases{2}.initFcn = ?initzero?;.biases{3}.initFcn = ?initzero?;.init(net6); % - инициализация сети.

3. Выдать на экран матрицы весов и смещения, используя команды 3-го пункта 5-го задания.

. Промоделировать сеть и возвратить её к исходным значениям весов и смещений:

Ynet6 = sim(net6);= revert(net6).

Задание 7. Создать и инициализировать трёхслойную сеть с двумя входами, используя следующие функции инициализации:

а) rands - для задания случайных весов и смещений.

б) randnc - для задания случайной матрицы с нормированными столбцами;

в) randnv - для задания случайной матрицы с нормированными строками;

г) initcon - для задания равных смещений;

д) midpoint - для задания матрицы средних значений;

Для создания и инициализации сети использовать команды 6-го задания, заменяя в них функцию initzero на рассматриваемые функции инициализации, а сеть net6 - на сеть net7.

Задание 8. Создать двухслойную нейронную сеть с прямой передачей сигн?/p>