лабы по Сапунову / Lab4_neural / Лабораторная работа №4
.doc
Лабораторная работа №4
курс: «Вычислительный интеллект».
тема: АЛГОРИТМ ОБРАТНОГО РАСПРОСТРАНЕНИЯ ОШИБКИ
студента 5 курса группы СИИ (магистры)
Дворника Константина Вариант 2
Создаем в Matlab следующий код:
X = [6 1 9 9 6 1 1 8 3 4 7 5 7 4 3 5];
Y = [4 8 1 3 8 1 4 3 3 2 5 3 7.5 5 5 6];
input = [X; Y];
target = [ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1];
net.trainParam.epochs = 200;
net.trainParam.goal = 0.001;
[net,tr] = train(net,input,target);
Обучение персептрона происходит в функции train.
Параметры, которые передаются в функцию train:
-
net – многослойная сеть, объявленная с помощью функции newff.
-
input – входные параметры
-
target – вектор целей.
net.trainParam.epochs = 200; - кол-во эпох, после которого функция train прекратит действие, если не ошибка не переступит значение net.trainParam.goal = 0.001;
Для полученного результата делаем следующее:
input1 = [1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9;
1 2 3 4 5 6 7 8 9 0 2 3 4 5 6 7 8 9 1 1.5 3 4 5 6 7 7.5 9 1 2 3 3.5 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 1 2 3 4 5 7 8 9];
target1 = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0];
Z=sim(net,input1);
abs(target1-Z)<0.1 %выводим разницу между полученными результатами и желаемыми
Реализуем данную программу для разных архитектур сетей и функций активации:
X = [6 1 9 9 6 1 1 8 3 4 7 5 7 4 3 5];
Y = [4 8 1 3 8 1 4 3 3 2 5 3 7.5 5 5 6];
input = [X; Y];
target = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
net = newff([1 10; 1 8],[6 2 1], {'tansig' 'tansig' 'purelin'});
net.trainParam.epochs = 200;
net.trainParam.goal = 0.001;
[net,tr] = train(net,input,target);
Columns 1 through 21
1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1
Columns 22 through 42
0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1
Columns 43 through 63
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1
Columns 64 through 76
0 0 0 0 0 1 1 1 1 1 0 0 0
X = [6 1 9 9 6 1 1 8 3 4 7 5 7 4 3 5];
Y = [4 8 1 3 8 1 4 3 3 2 5 3 7.5 5 5 6];
input = [X; Y];
target = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
net = newff([1 10; 1 8],[6 2 1], {'logsig' 'logsig' 'logsig'});
net.trainParam.epochs = 200;
net.trainParam.goal = 0.001;
[net,tr] = train(net,input,target);
Columns 1 through 22
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 23 through 44
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 45 through 66
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 67 through 76
0 0 0 0 0 0 0 0 0 0
Меняем архитектуру сети:
X = [6 1 9 9 6 1 1 8 3 4 7 5 7 4 3 5];
Y = [4 8 1 3 8 1 4 3 3 2 5 3 7.5 5 5 6];
input = [X; Y];
target = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
net = newff([1 10; 1 8],[6 5 4 1], {'tansig' 'tansig' 'tansig' 'logsig'});
net.trainParam.epochs = 200;
net.trainParam.goal = 0.001;
[net,tr] = train(net,input,target);
Columns 1 through 22
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1
Columns 23 through 44
0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 1 0 0
Columns 45 through 66
1 1 1 0 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1
Columns 67 through 76
0 0 1 1 1 1 1 0 0 0
X = [6 1 9 9 6 1 1 8 3 4 7 5 7 4 3 5];
Y = [4 8 1 3 8 1 4 3 3 2 5 3 7.5 5 5 6];
input = [X; Y];
target = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
net = newff([1 10; 1 8],[6 5 4 1], {'logsig' 'logsig' 'logsig' 'tansig'});
net.trainParam.epochs = 200;
net.trainParam.goal = 0.001;
[net,tr] = train(net,input,target);
Columns 1 through 22
1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0
Columns 23 through 44
0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0
Columns 45 through 66
1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0
Columns 67 through 76
1 0 1 1 1 1 1 1 1 0
Меняем архитектуру сети:
X = [6 1 9 9 6 1 1 8 3 4 7 5 7 4 3 5];
Y = [4 8 1 3 8 1 4 3 3 2 5 3 7.5 5 5 6];
input = [X; Y];
target = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
net = newff([1 10; 1 8],[6 1], {'logsig' 'tansig'});
net.trainParam.epochs = 200;
net.trainParam.goal = 0.001;
[net,tr] = train(net,input,target);
Columns 1 through 22
1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0
Columns 23 through 44
0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0
Columns 45 through 66
1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1
Columns 67 through 76
0 0 1 1 1 1 1 0 0 0
X = [6 7 1 9 5 2 9 6 1 3 3 1 8 3 4 6];
Y = [4 7 8 1 6 5 3 8 1 4 5 4 3 3 2 1];
input = [X; Y];
target = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
net = newff([1 10; 1 8],[6 1], {'tansig' 'logsig'});
net.trainParam.epochs = 200;
net.trainParam.goal = 0.001;
[net,tr] = train(net,input,target);
Columns 1 through 22
1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0
Columns 23 through 44
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 45 through 66
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0
Columns 67 through 76
0 0 1 1 1 1 1 1 0 0