Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы по Сапунову / Lab3_nural / Лабораторная №3 (отчет)

.doc
Скачиваний:
18
Добавлен:
13.04.2015
Размер:
10.5 Mб
Скачать

Лабораторная работа №3

курс: «Вычислительный интеллект».

тема: Многослойный персептрон.

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

студента 5 курса группы СИИ(магистры) 2 Вариант

Дворника Константина

Построить многослойную нейронную сеть, реализующую отделение на плоскости точек, принадлежащих заданной невыпуклой фигуре, от остальных.

Для удобства добавлю прямую 6 (см. рис. 1).

Рис. 1

Определение уравнений прямых, ограничивающих заданную фигуру.

1) x + y - 7= 0

2) 4x – 7y + 27 = 0

3) 1x - y + 0 = 0

4) 2x – 1y - 6 = 0

5) -3x - 1y + 19 = 0

6) 8x - 3y - 45 = 0

Необходимая область будет построена как комбинация выпуклых многоугольников – из основной фигуры, основанной линиями 1-2-3, будут удалены фигуры, ограниченные прямыми 3-4-5-6.

Таким образом, получем 3-хслойную нейронную сеть:

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

2-й слой: 2 нейрона, формирующие данные о 2-х многоугольниках.

3-й слой: 1 нейрон, формирующий функцию, которая объединяет знания о положении точки.

Структурная схема нейронной сети отображена на рис. 2

Рис. 2

Программа на Matlab:

X = [6 1 9 5 9 6 1 3 1 8 3 4 7 5 7 4];

Y = [4 8 1 6 3 8 1 5 4 3 3 2 5 3 7.5 5];

input = [X; Y];

net = newff([1 9; 1 8],[6 2 1], {'hardlim' 'hardlim' 'hardlim'});

net.IW{1, 1} = [1 1; 4 -7; 1 -1; 2 -1; -3 -1; 8 -3];

net.b{1} = [-7; 27; 0; -6; 19; -45];

net.LW{2, 1} = [1 1 0 0 0 0; 0 0 1 1 -1 0 ];

net.b{2} = [-1.5;-1.5];

net.LW{3, 2} = [1 -1];

net.b{3} = -0.5;

y = sim (net,input);

plotpv(input,y);

axis([0 10 0 10])

line([2 6],[5 1],'LineWidth',1);

line([2 9],[5 9],'LineWidth',1);

line([6 9],[6 9],'LineWidth',1);

line([5 6],[4 6],'LineWidth',1);

line([5 6],[4 1],'LineWidth',1);

Результат работы программы:

Соседние файлы в папке Lab3_nural