Контрольная работа: Нейронная сеть Хемминга
Национальный технический университет Украины
"Киевский политехнический институт"
Физико-технический факультет
Контрольная работа № 1
По дисциплине "Интеллектуальные системы"
по теме: " Нейронная сеть Хемминга"
Киев-2008
Содержание
1. Реализация сети. Входные символы
2.Обучение сети
3. Локализация и масштабирование изображения
4 Искажение изображения
5.Алгоритм распознавания
Цель: Создать программную реализацию статической нейронной сети Хемминга, распознающей символы текста.
Описание реализации алгоритма.
1. Реализация сети. Входные символы
Для определения общих параметров НС - несколько констант:
const int iSourceSize=100; // Размер стороны исходного изображения const int iDestSize=40; // Размер стороны изображения для распознавания const int N=iDestSize*iDestSize; // Сколько входов const int M=10; // Сколько образов const float e=- (1/M) /2; // Вес синапсов второго слоя
Размер входного образа (bmp-файл) должен быть 100х100 точек (параметр iSourceSize), а перед обработкой он приводится к размеру 40x40 (параметр iDestSize). Таким образом, количество входов сети - 1600 (один вход - одна точка изображения; параметр N). Количество выходов M совпадает с количеством цифр и равняется 10. Вес отрицательной обратной связи второго слоя был принят равным - 0.05.
Рис 1 Пример исходного образа
Каждый нейрон представляется в виде простой структуры. Слой - это просто массив нейронов. Первый слой:
struct InputNeiron // Тип - нейрон первого слоя { float fW [N] ; // Весовые коэффициенты синапсов float fOutput; // Выход };
InputNeiron InputRow [M] ; // Это - первый слой
Второй слой реализуется так:
struct Neiron // Тип - нейрон второго слоя { float fOutput; // Выход float fSum; // Взвешенная сумма входов };
Neiron SecondRow [M] ; // Это - второй слой
Здесь уже нет смысла хранить значения отдельных весов, т.к они не меняются на протяжении всей работы сети.
2.Обучение сети
После процедуры обучения списки весовых коэффициентов синапсов первого слоя будут содержать образы эталонных символов.
Алгоритм обучения сети Хэмминга, адаптированный для данной задачи , выглядит так:
--> ЧИТАТЬ ПОЛНОСТЬЮ <--