MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Нейронная сеть Хемминга

Название:Нейронная сеть Хемминга
Просмотров:71
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание: Национальный технический университет Украины "Киевский политехнический институт" Физико-технический факультет Контрольная работа № 1 По дисциплине "Интеллектуальные системы"

Часть полного текста документа:

Национальный технический университет Украины

"Киевский политехнический институт"

Физико-технический факультет

Контрольная работа № 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. Обучение сети

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

Алгоритм обучения сети Хэмминга, адаптированный для данной задачи, выглядит так:

1. Выбирается i-й входной образ.

2. Изображение локализуется и приводится к нужному масштабу.

3. Образ поточечно подаётся на входы i-го нейрона. Если k-я точка образа чёрная, то весу k-го входа присваивается значение 0.5, в противном случае - 0.5 (см. формулу 5 п.3.2.5).

4. Переход на шаг 1, пока не исчерпаны все эталонные образы.

Исходный код алгоритма обучения выглядит так:

TImage* I1=new TImage (this); // Сюда загружаем эталонный образ TImage* I2=new TImage (this); // А здесь будет масштабированный I2->Width=iDestSize;

I2->Height=iDestSize;

for (int i=0; i<M; i++) { I1->Picture->LoadFromFile (AnsiString (i) +". bmp");

vScale (I2, I1); // Читаем и масштабируем образ for (int x=0; x<iDestSize; x++) for (int y=0; y<iDestSize; y++) // Перебираем поточечно if (I2->Canvas->Pixels [x] [y] ==clBlack) InputRow [i]. fW [x*iDestSize+y] =0.5;

else InputRow [i]. fW [x*iDestSize+y] =-0.5;

} delete I1;

delete I2;


3. Локализация и масштабирование изображения

Для успешной работы нужно выяснить точный размер и местоположение образа цифры. После локализации - приводим образ к размеру 40*40 (масштабирование). Эти операции выполняются как на этапе обучения сети, так и на этапе распознавания. Всё это проделывает функция void vScale (TImage*, TImage*).

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

float iMinX, iMinY, iMaxX, iMaxY; // Границы локализованной цифры iMinX=iMinY=iSourceSize+1;

iMaxX=iMaxY=-1;

for (int x=0; x<iSourceSize; x++) for (int y=0; y<iSourceSize; y++) if (Source->Canvas->Pixels [x] [y] ==clBlack) { if (x<iMinX) iMinX=x;

if (y<iMinY) iMinY=y; if (x>iMaxX) iMaxX=x;

if (y>iMaxY) iMaxY=y;

}

В данной реализации используется стандартный алгоритм обратного масштабирования без интерполяции (Source - исходный образ, Dest - отмасштабированный):

const float fScaleX= (iMaxX-iMinX) /iDestSize; // Коэффициенты сжатия const float fScaleY= (iMaxY-iMinY) /iDestSize;

for (int x=0; x<iDestSize; x++) for (int y=0; y<=iDestSize; y++) Dest->Canvas->Pixels [x] [y] = Source->Canvas->Pixels [x*fScaleX+iMinX] [y*fScaleY+iMinY] ;


4 Искажение изображения

Чтобы не распознавать эталонные образы - введем искажение. ............




 
     

Вечно с вами © MaterStudiorum.ru