Нейросеревые модели
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
ние начальных весов;.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>