Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Программа разработанная на языке С#.
Анализируя графики ошибки обучения нейросети (рис. 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; просмотров: 316. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |