Студопедия

КАТЕГОРИИ:

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

Программа разработанная на языке С#.




 

Анализируя графики ошибки обучения нейросети (рис. 2), а так же экспериментально были подобраны следующие параметры:

Количество шагов обучения – 100;

Коэффициент скорости обучения – 0,7;

Коэффициент сигмоида – 1,3;

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

При запуске вызываем Windows окно. Ознакомившись, вводим данные с клавиатуры, требуемые программой. Вычислительный эксперимент представлен на рисунках 8, 9.

Рисунок 8 - Результат работы программы, представленный в Windows окне

Рисунок 9 - Результат работы программы, представленный в Windows окне

При неправильном использовании возникают ошибки, представленные на рисунках 10, 11.

 

Рисунок 10 – Ошибки при вводе данных

 

 

Рисунок 11 – Ошибки при вводе данных

 

 

Руководство программиста

Разработанная программа демонстрирует изученные в процессе обучения навыки владения языком C#.

Назначение и условия применения программы

Программа предназначена для распознавания двух классов чисел.

Для запуска этой программы необходимо иметь на компьютере установленную версию Windows XP/Vista/7. Данная программа разрабатывалась в среде MSVisualC# 2010(Microsoft .NET Framework 4.0).

 

Характеристика программы

Для написания программы нам понадобились следующие команды:

  Получение числовых значений из текстовых полей:

           neyr1 = Convert.ToInt32(textBox1.Text); (cм. Приложение А)

Вывод окошка:

MessageBox.Show("Введите количество нейронов первого слоя");

(cм. Приложение А)

Чтение содержимого файла:

text = File.ReadAllLines("1-1.txt"); (cм. Приложение А)

Сброс текстбокса:

textBox1.Clear();(cм. Приложение А)

 

 

В данной программе был создан класс - class Neyro, с помощью которого создается нейросеть, и затем ведется работа с ней.

Класс содержит следующие переменные:

   public double[] prom, vvod;

   public double[,] w1, w2;

   public double[] rez;

   public int count1=0, count2=0;

   public int neyr1, neyr2;

   public int[] ogid;

   public bool[] ogid1, ogid2;

   public double k, skor;

   public double[] err_m = new double[100];  (cм. Приложение А)

 

Значениям переменных neyr1, neyr2 присваивается значение количества нейронов в первом и втором слоях нейросети соответственно.

Массив vvod заполняется из файла с входными данными. Далее вычисляются значения массивов prom и rez. Массив prom – это результаты выходов нейронов первого слоя. А массив rez – результаты выходов нейросети.

Алгоритм вычислений в классе соответствует формулам (5), (6), (7);

(см. 1.1 Математический алгоритм).

Так же в классе используются методы:

public int[] Vihod(int kol, int kl) - метод, формирующий целевой вектор.

public void Korekt()  - метод, коректирующий синапсы.

public void Rez() – метод вычисления результата нейросети.

public void CreateNS() – метод, создающий нейросеть.

public void Obuchenie(string file, StreamWriter sw1) – метод, обучающий нейросеть определенному классу чисел.

 (cм. Приложение А)

Текст программы класса представлен в Приложении А.

Правильность работы класса и программы в целом подтверждена вычислительным экспериментом. (см. рисунок 4,5).

Обращение к программе

Для запуска программы необходимо открыть в папке «курсовой ИТПЗ 2010» файл «курсовой титп2.sln» с помощью  MS Visual Studio С# 2010 и нажать кнопку «Начать отладку». В результате должно появиться окно программы.

 

 

Входные и выходные данные

Анализируя графики ошибки обучения нейросети (рис. 2), а так же экспериментально были подобраны следующие параметры:

Количество шагов обучения – 100;

Коэффициент скорости обучения – 0,7;

Коэффициент сигмоида – 1,3;

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

В пункты: «Количество нейронов», нужно вводить целые значения. Значения коэффицентов k (коэффицент сигмоидной функции) и skor (скорость обучения) могут быть дробными.

В пункте «Обучающая выборка» нужно выбрать файлы для обучения нейросети соответствующим классам.

В пунктах «Файл» выбираются файлы для экзаменационной и тестовой выборки.

 

 

Руководство пользователя

Программа предназначена для распознавания двух классов чисел.

Для запуска программы необходимо открыть в папке «курсовой ИТПЗ 2010» файл «курсовой титп2.sln»    с помощью  MS Visual Studio С# 2010 и нажать кнопку  «Начать отладку». В результате должно появиться окно программы.

После появления рабочего окна (рисунок 9) можно поступать к работе.

Рисунок 9 – Окно для ввода данных

В пункты: «Количество нейронов», нужно вводить целые значения. Значения коэффицентов k (коэффицент сигмоиды) и skor (скорость обучения) могут быть дробными.

Для данной нейросети оптимальными являются следующие значения:

Количество нейронов 1 слоя – 15;

Количество нейронов 2 слоя – 4;

Коэффициент сигмоиды – 1,3;

Скорость обучения – 0,7.

После ввода этих значений нужно нажать кнопку «Создать сеть».

Далее в пункте «Обучающая выборка» нужно выбрать файлы для обучения нейросети и нажать на кнопку «Обучить».

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

Затем мы должны проверить нейросеть. В пункте «Экзаменационная выборка» выбираются файлы первого или второго класса, в которых содержаться по 20 выборок. После нажатия кнопки «Старт» в строке «Процент» появится процент распознавания нейросетью образов выбранного класса. Если процент распознавания низкий, то следует вернуться к обучению нейросети.

Тестовая выборка служит для того, чтобы самому убедиться в правильности работы программы. Здесь выбирается файл, содержащий одну выборку определенного класса, и после нажатия кнопки «Результат» появляется сообщение, к какому классу относится данная выборка.

 

Заключение

Разработанная программа соответствует заданным на этапе проектирования требованиям. Во время работы над программой были изучены функций языка С#, принципы программирования нейросетей. Был исследован метод обратного распространения ошибки для обучения нейросети, были подобраны оптимальные параметры для данного метода.

 

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

Список литературы

 

1. Павловская Т.А. C#. Программирование на языке высокого уровня. СПб. : Питер, 2007.

2. Фролов А. В., Фролов Г. В. Язык С#. Самоучитель. М: ДИАЛОГ-МИФИ,        2003.- 560с.

3. ГОСТ 2.105-95 Единая система конструкторской документации. Общие требования к текстовым документам.

4. ГОСТ 19.504-79 (СТ СЭВ 2095-80). Руководство программиста. Требования к содержанию и оформлению.

5. ГОСТ 19.701-90 (ИСО 5807-85). ЕСПД. Схемы алгоритмов, программ, данных и систем.

 

Приложение А










Последнее изменение этой страницы: 2018-04-12; просмотров: 285.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...