- •Содержание
- •Техническое задание
- •Введение
- •Разработка алгоритма
- •Математический алгоритм
- •Разработка схем алгоритмов
- •2. Разработка программы
- •Вычислительный эксперимент
- •3.1 Определение оптимальных параметров нейросети в среде Matlab.
- •3.2 Программа разработанная на языке с#.
- •Руководство программиста
- •4.1 Назначение и условия применения программы
- •4.2 Характеристика программы
- •4.3 Обращение к программе
- •Входные и выходные данные
- •Руководство пользователя
- •Заключение
- •Список литературы
- •Приложение а
3.2 Программа разработанная на языке с#.
Анализируя графики ошибки обучения нейросети (рис. 2), а так же экспериментально были подобраны следующие параметры:
Количество шагов обучения – 100;
Коэффициент скорости обучения – 0,7;
Коэффициент сигмоида – 1,3;
Эффективность работы нейросети с этими параметрами так же была проверена при работе с другими классами чисел. Поэтому для данной нейросети лучше использовать именно эти значения.
При запуске вызываем Windows окно. Ознакомившись, вводим данные с клавиатуры, требуемые программой. Вычислительный эксперимент представлен на рисунках 8, 9.
Рисунок 8 - Результат работы программы, представленный в Windows окне
Рисунок 9 - Результат работы программы, представленный в Windows окне
При неправильном использовании возникают ошибки, представленные на рисунках 10, 11.
Рисунок 10 – Ошибки при вводе данных
Рисунок 11 – Ошибки при вводе данных
-
Руководство программиста
Разработанная программа демонстрирует изученные в процессе обучения навыки владения языком C#.
4.1 Назначение и условия применения программы
Программа предназначена для распознавания двух классов чисел.
Для запуска этой программы необходимо иметь на компьютере установленную версию Windows XP/Vista/7. Данная программа разрабатывалась в среде MSVisualC# 2010(Microsoft .NET Framework 4.0).
4.2 Характеристика программы
Для написания программы нам понадобились следующие команды:
Получение числовых значений из текстовых полей:
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).