18804

Однослойная нейронная сеть, решающая задачу распознавания

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2014-03-24

269 KB

50 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУЛИКИ БЕЛАРУСЬ

УО «БАРАНОВИЧСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

ИНЖЕНЕРНЫЙ ФАКУЛЬТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ И ТЕХНОЛОГИЙ

Лабораторная работа № 2

По дисциплине: «Искусственный интеллект»

По теме: «Однослойная нейронная сеть, решающая задачу распознавания»

                       Выполнил: студентка гр. ИСТ-41

           Цебрук Е. В.

           Проверил: Шах А. В.

Барановичи   2012

Цель работы: изучение алгоритмов обучения нейронных сетей, получение практических навыков работы с простейшими нейронными сетями, для обучения которых используется алгоритм Хебба и алгоритм Розенблатта.

Постановка задачи

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

  •  числа рецепторных нейронов (входов); число п х-элементов сети должно быть в пределах 12<п<30;
  •  числа выходных нейронов (нейронов сети);
  •  выбор векторов выходных сигналов.

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

Код программы:

public class NewJFrame extends javax.swing.JFrame {

double w[][],eps=0.01,a=0.001,

      etalon1=8,

      etalon2=30,

      etalon3=10,

      etalon4=20,

      etalon6,

      etalon7;

int n=30,evalut=0,

   activn1[][],

   activn2[][],

   activn3[][],

   activn4[][],

   activn6[][],

   activn7[][];

   // подсчет суммы весов

   public double summ(double wes[][],int act[][]){

   double s=0;

   

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

           if(act[i][j]==1){

               s+=wes[i][j];

           }

       }}

   return s;

   }

   

   //изменение весов

   public void update(int act[][],double etl){

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

               if(act[i][j]==1) w[i][j]=w[i][j]+a*(etl-summ(w,act));

           }}}

     

   //определение активности

   public int[][] actiw(JTable tbl){

   int ac[][];

   ac=new int[5][6];

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

       if(tbl.getValueAt(i,j)=="^"){

               ac[i][j]=1;

           }else ac[i][j]=0;

       }

   }

       return ac;

   

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

w=new double [5][6];

activn1=new int[5][6];

activn2=new int[5][6];

activn3=new int[5][6];

activn4=new int[5][6];

activn6=new int[5][6];

activn7=new int[5][6];

Random rd = new Random();

   //начальные веса

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

           w[i][j]=(1+rd.nextInt(50-1))/100.0;                

       }

   }

       //активность

       activn1=actiw(jTable1);

       activn2=actiw(jTable2);

       activn3=actiw(jTable3);

       activn4=actiw(jTable4);

while(evalut<100000){   

if(Math.abs(summ(w,activn1)-etalon1)>eps){

update(activn1,etalon1);

}

if(Math.abs(summ(w,activn2)-etalon2)>eps){

update(activn2,etalon2);

}

if(Math.abs(summ(w,activn3)-etalon3)>eps){

update(activn3,etalon3);

}

if(Math.abs(summ(w,activn4)-etalon4)>eps){

update(activn4,etalon4);

}

evalut++;

if ((Math.abs(summ(w,activn1)-etalon1)<eps && Math.abs(summ(w,activn2)-etalon2)<eps &&  Math.abs(summ(w,activn3)-etalon3)<eps && Math.abs(summ(w,activn4)-etalon4)<eps)) break;

}

activn6=actiw(jTable6);

activn7=actiw(jTable7);

etalon6=summ(w,activn6);

etalon7=summ(w,activn7);

jTextArea1.append("Ура! Веса подобраны :)");

jButton2.setEnabled(true);

   }                                        

   private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

   double sum;  

   jTextArea1.setText("");

   sum=summ(w,actiw(jTable5));

   jTextArea1.append("Общий вес="+String.valueOf(summ(w,actiw(jTable5))+"\n"));

   if(Math.abs(sum-etalon1)<Math.abs(sum-etalon2) && Math.abs(sum-etalon1)<Math.abs(sum-etalon3) && Math.abs(sum-etalon1)<Math.abs(sum-etalon4) && Math.abs(sum-etalon1)<Math.abs(sum-etalon6) && Math.abs(sum-etalon1)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква Ц!");  

   if(Math.abs(sum-etalon2)<Math.abs(sum-etalon1) && Math.abs(sum-etalon2)<Math.abs(sum-etalon3) && Math.abs(sum-etalon2)<Math.abs(sum-etalon4) && Math.abs(sum-etalon2)<Math.abs(sum-etalon6) && Math.abs(sum-etalon2)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква К!");

   if(Math.abs(sum-etalon3)<Math.abs(sum-etalon1) && Math.abs(sum-etalon3)<Math.abs(sum-etalon2) && Math.abs(sum-etalon3)<Math.abs(sum-etalon4) && Math.abs(sum-etalon3)<Math.abs(sum-etalon6) && Math.abs(sum-etalon3)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква Е!");

   if(Math.abs(sum-etalon4)<Math.abs(sum-etalon1) && Math.abs(sum-etalon4)<Math.abs(sum-etalon2) && Math.abs(sum-etalon4)<Math.abs(sum-etalon3) && Math.abs(sum-etalon4)<Math.abs(sum-etalon6) && Math.abs(sum-etalon4)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква И!");

   if(Math.abs(sum-etalon6)<Math.abs(sum-etalon1) && Math.abs(sum-etalon6)<Math.abs(sum-etalon2) && Math.abs(sum-etalon6)<Math.abs(sum-etalon3) && Math.abs(sum-etalon6)<Math.abs(sum-etalon4) && Math.abs(sum-etalon6)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква "+jTextField1.getText()+":)");

   if(Math.abs(sum-etalon7)<Math.abs(sum-etalon1) && Math.abs(sum-etalon7)<Math.abs(sum-etalon2) && Math.abs(sum-etalon7)<Math.abs(sum-etalon3) && Math.abs(sum-etalon7)<Math.abs(sum-etalon4) && Math.abs(sum-etalon7)<Math.abs(sum-etalon6)) jTextArea1.append("Это буква "+jTextField2.getText()+":)");

   }                                        

Результат:

 

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


 

А также другие работы, которые могут Вас заинтересовать

44121. Транспортировка грузов 1.01 MB
  Поэтому для обеспечения высоких эксплуатационных характеристик грузоподъемных кранов и их безаварийной работы машинист крана крановщик и обслуживающий персонал должны знать хорошо назначение область применения и устройство кранов их конструктивные особенности технические характеристики устройство и работу крановых механизмов электрооборудования приборов и устройств безопасности. Кроме того машинист крана должен знать правила безопасной эксплуатации кранов их технического обслуживания и ремонта современную прогрессивную технологию и...
44122. МОТИВАЦИИ УЧЕБНОЙ ДЕЯТЕЛЬНОСТИ ПЕРВОКЛАССНИКОВ С ЗАДЕРЖКОЙ ПСИХИЧЕСКОГО РАЗВИТИЯ 588.5 KB
  Мотивационную сферу человека с точки зрения ее развитости можно оценивать по следующим параметрам: широта, гибкость и иерархизированность. Под широтой мотивационной сферы понимается качественное разнообразие мотивационных факторов — диспозиций (мотивов), потребностей и целей, представленных на каждом из уровней.
44123. Формирование и развитие рынка речных круизов в Перми и Пермском крае на примере туристической фирмы ООО «Кубань» 838 KB
  Основные понятия рынка и государственное регулирование сферы туризма в России Переход страны к рыночной экономике сопровождается постепенным созданием конкурентной среды во всех отраслях современного туризма в том числе и в сфере речного круизного туризма. В российской экономической литературе вопросам туризма посвящено немало научных исследований. Таким образом планируется рассмотреть проблемы и сформировать программы развития туризма регионального муниципального уровней в которых предстоит разработать и реализовать комплекс мер...
44124. Проектирование районной понизительной подстанции 356.24 KB
  На данной подстанции по ПУЭ устанавливается 2 трансформатора, это делается из-за того что на ней присутствуют потребители I и II категории. Перерыв в электроснабжение которых для I категории допускается лишь на время автоматического восстановления питания, а для II категории – на время
44125. Оценка стоимости недвижимости. Анализ ипотеки в Барнауле и Алтайском крае 1.09 MB
  Мне было дано провести анализ по оценки объекта недвижимости в городе Барнаулея взял как примержилой дом находящегося по адресу: г. Оценка стоимости недвижимости процесс определения рыночной стоимости объекта или отдельных прав в отношении оцениваемого объекта недвижимости. Оценка стоимости недвижимости включает: определение стоимости права собственности или иных прав например права аренды права пользования и т. в отношении различных объектов недвижимости.
44126. Создание электронного библиотечного каталога 1.79 MB
  На практике это означает выполнение автоматизированной обработки новых поступлений в библиотеку; освобождение сотрудников от ряда рутинных работ по подготовке картотек изданий списков заказов писем отчетной документации; создание базы данных о поступлениях; осуществление операций по созданию и копированию тематических архивов литературы. Благодаря автоматизации с минимальными временными затратами можно выполнять следующие функции: предметный поиск информации по запросам читателей; обслуживание баз данных информационных и периодических...
44127. Проект управління якістю продукції в ВАТ “Поліграфкнига” 961 KB
  В ринковій економіці велике значення приділяється проблемам якості. За методами забезпечення конкуренція поділяється на цінову (конкуренція за рахунок зниження ціни) та нецінову, при якій за ту ж саму ціну виробник пропонує товар з більш високими якісними параметрами та комплексом послуг. Тільки якість може привернути увагу споживача
44128. Адольф Гитлер: политико-психологический портрет 353.5 KB
  Личность Адольфа Гитлера поэтому представляет и будет представлять собой особой интерес. Так как за всю историю XX века, пожалуй, не найти личность, о которой было бы сложено столько различных предрассудков и стереотипов.
44129. Построение и проверка локальной логической модели данных 524.5 KB
  Например объект работник безусловно является сущностью потому что любой работник существует независимо от того знаем мы его имя адрес и номер телефона или нет. Сведения об атрибутах Тип сущности Атрибут Описание Тип данных длина Ограничения Допустность NULL Производный Отдел Отдел_№ Уникальный идентификатор отдела компании Целое Первичный ключ нет нет Отдел_Имя Наименование отдела Символьный до 50 символов нет нет Тел_№ Номер телефона отдела Символьный фиксированный 13 символов Альтернативный ключ нет нет Факс_№ Номер факса...