Реализация однослойной нейронной сети (персептрона)

Курсовой проект - Менеджмент

Другие курсовые по предмету Менеджмент

строки j-столбца. Далее считается и выдается сообщение в зависимости от знака S:

 

y=

 

void __fastcall TForm1::BitBtn2Click(TObject *Sender)- при нажатии кнопки Обучить эта функция пересчитывает матрицу весов по формуле

 

,

 

где , а выбирается в зависимости от y. Если y=0 то .

Если y=1 то .

Исходный код программы находится в Приложении 1. [1-2]

Заключение

 

В результате работы были рассмотрены некоторые основы теории искусственных нейронных сетей. Был изучен и реализован алгоритм обучения персептрона. Разработано приложение с функционалом, описанным в разделе Постановка задачи. Имеется возможность определения фигуры нарисованной пользователем.

Для развития программы необходимо добавить такие функции как:

Масштабирование изображения

Увеличение количества фигур для распознавания путем увеличения нейронов в сети

Распознавание букв, цифр симфолов

Список использованной литературы и источников

 

1.Архангельский А.Я., Тагин М.А. Программирование в С++Builder 6 и 2006 Бином-Пресс, 2006.-1182 с.: ил

.И.Л. Каширина НЕЙРОСЕТЕВЫЕ ТЕХНОЛОГИИ Учебно-методическое пособие для вузов, 2008-72с.:ил

.Саймон Хайкин Нейронные сети: полный курс Второе издание, 2006-1105с.:ил

4."> - web-ресурс

Приложение 1- Исходные коды программы

 

Модуль Unit1.cpp

//---------------------------------------------------------------------------

#include

#include

#include

#include

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form1;flag=false;check=false;S;y;g;X[10][10];W[10][10];

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------__fastcall TForm1::FormCreate(TObject *Sender)

{-> Canvas -> Brush -> Color = clWhite;-> DoubleBuffered = true;(int i=0;i<10;i++){(int j=0;j<10;j++){[i][j]=(rand()%7 - 3)/10.0;

//(((-1)*rand()%7/10)+(rand()%7/10));

}

}

}

//---------------------------------------------------------------------------__fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,X, int Y)

{-> Canvas -> Pen -> Color = clBlack;-> Canvas -> Pen->Width=5;(flag) Image1 -> Canvas -> LineTo(X, Y);

}

//---------------------------------------------------------------------------__fastcall TForm1::Image1MouseDown(TObject *Sender,Button, TShiftState Shift, int X, int Y)

{= true;-> Canvas -> MoveTo(X, Y);

}

//---------------------------------------------------------------------------__fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,Shift, int X, int Y)

{= false;

}

//---------------------------------------------------------------------------__fastcall TForm1::BitBtn4Click(TObject *Sender)

{->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));

}

//---------------------------------------------------------------------------__fastcall TForm1::BitBtn1Click(TObject *Sender)

{(int a=0;a<10;a++)(int b=0;b<10;b++)[a][b]=0;

for (int a=0; a<10;a++) // проход 10х10 по квадратикам 30х30

{ int n=30;k=0;(int b=0; b<10;b++)

{(int i=k; i<n; i++){ l=a*30;

int m=l+30; // проход по квадрату 30х30

for (int j=l; j<m; j++)

{( Form1->Image1->Canvas->Pixels[i][j]== clBlack )

{[a][b] = 1;

}

};

}=n;=k+30;

}

}=0;(int a=0; a<10;a++){(int b=0; b<10;b++)

{=S+X[a][b]*W[a][b];

}

}(S>0)

{>MessageBox("Это треугольник!","Сообщение",MB_ICONINFORMATION);=1;

}{>MessageBox("Это круг!","Сообщение",MB_ICONINFORMATION);=0;

}

}

//---------------------------------------------------------------------------__fastcall TForm1::BitBtn2Click(TObject *Sender)

{(y==1) g=-1;(y==0) g=1;(int a=0; a<10;a++){(int b=0; b<10;b++)

{[a][b]=W[a][b]+1/2*g*X[a][b];

}

}(int i=0;iCells[j][i]=X[i][j];

}

}

}

//---------------------------------------------------------------------------