Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет№2.doc
Скачиваний:
0
Добавлен:
11.07.2019
Размер:
144.38 Кб
Скачать

//Обучение нейронной сети

private void btnTraining_Click(object sender, EventArgs e)

{

//если ListBox пуст

if (listBoxPic.Items.Count == 0)

{

MessageBox.Show(

"Список файлов пуст",

"Внимание",

MessageBoxButtons.OK,

MessageBoxIcon.Warning,

MessageBoxDefaultButton.Button2);

return ;

}

StatusBar.Text = "Идет обучение!";

Application.DoEvents();

//блокируем элементы формы

OnOfElements(0);

//здесь храняться имена файлов

List<string> files = new List<string>();

for (int i = 0; i < listBoxPic.Items.Count; i++)

{

files.Add(listBoxPic.Items[i].ToString());

}

//здесь храняться все точки из изображений files

List<double[]> all_x = new List<double[]>();

BmpReadData(files, all_x);

//проводим обучение

n.Training(all_x, res);

//записываем весы в файлы

//файлы весов

string[] w_files = { "w1", "w2" };

n.SaveWToFile(w_files);

StatusBar.Text = "Обучение завершено!";

//разблокируем элементы формы

OnOfElements(1);

}

//определение четности цифры

private void btnRes_Click(object sender, EventArgs e)

{

//не выбран файл из списка

if (listBoxPic.SelectedIndex == -1)

{

MessageBox.Show(

"Не выбран файл для определения четности",

"Внимание",

MessageBoxButtons.OK,

MessageBoxIcon.Warning,

MessageBoxDefaultButton.Button2);

return ;

}

//проверка существования файлов весов w или являются ли они пустыми

try

{

//файлы весов

string[] w_files = { "w1", "w2" };

n.LoadWFromFile(w_files);

}

catch (Exception ex)

{

MessageBox.Show(

"Файлы весов w - не существуют либо пусты\n Нужно обучить нейронную сеть",

"Внимание",

MessageBoxButtons.OK,

MessageBoxIcon.Warning,

MessageBoxDefaultButton.Button2);

return ;

}

//читаем входы из изображения

n.ReadXFromBmp(listBoxPic.Items[listBoxPic.SelectedIndex].ToString());

//нечетное

double[] odd = { 0, 1, 0, 0, 0 };

//четное

double[] even = { 1, 0, 0, 0, 0 };

string mess = "";

if (n.Error(odd))

mess = "Цифра нечетная";

else if (n.Error(even))

mess = "Цифра четная";

else

mess = "Неизвестная цифра";

MessageBox.Show(

mess,

listBoxPic.Items[listBoxPic.SelectedIndex].ToString(),

MessageBoxButtons.OK,

MessageBoxIcon.Information,

MessageBoxDefaultButton.Button2);

}

//param = 0 - блокируем элементы формы, в противном разблокируем

private void OnOfElements(int param)

{

bool res = false;

if (param == 1)

res = true;

btnAdd.Enabled = res;

btnClear.Enabled = res;

btnDel.Enabled = res;

btnRes.Enabled = res;

btnTraining.Enabled = res;

listBoxPic.Enabled = res;

cmbBoxRes.Enabled = res;

Exit.Enabled = res;

}

}

}

Вывод: В ходе выполнения лабораторной работы была построена программа, использующая многослойную нейронную сеть.

10