18804

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

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

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

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

Русский

2014-03-24

269 KB

42 чел.

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

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

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

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

Лабораторная работа № 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()+":)");

   }                                        

Результат:

 

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


 

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

29112. Понятие и виды гражданско-правовых обязательств 29 KB
  Понятие и виды гражданскоправовых обязательств. Под обязательством понимается гражданское правоотношение в силу которого одно лицо должник обязано совершить в пользу другого лица кредитора определенное действие передать имущество выполнить работу уплатить деньги либо воздержаться от определенного действия а кредитор имеет право требовать от должника исполнения его обязанности. Виды: Встречные возникают только в случае взаимного обязательства; Простые договор займа и сложные договор куплипродажи Альтернативные и...
29113. Принципы исполнения обязательств 25 KB
  Исполнение обязательств выражающееся в совершении или в воздержании от действий составляющих предмет обязательства базируется на ряде принципов. Принцип надлежащего исполнения обязательства должны исполняться надлежащим образом в соответствии с условиями обязательства и требованиями закона иных правовых актов а при их отсутствии в соответствии с обычаями делового оборота или иными обычно предъявляемыми требованиями надлежащему лицу в день или период времени предусмотренный обязательством в установленном месте. Принцип...
29114. Срок исполнения обязательств 24.5 KB
  Срок исполнения обязательств. Под сроком исполнения обязательства понимается наступление определенного срока когда обязательство должно быть выполнено. Сроки исполнения могут быть общие на весь период действия длящегося договора частные для исполнения отдельных обязанностей. От сроков исполнения договора или отдельных договорных обязанностей следует отличать срок действия договора.
29115. Множественность лиц в обязательствах 25 KB
  Множественность лиц в обязательствах В обязательстве в качестве каждой из его сторон кредитора или должника могут участвовать одно или одновременно несколько лиц. Наличие на стороне должника кредитора или обеих сторон нескольких лиц множественностью лиц в обязательствах. Виды обязательств в множественности лиц: Активное Пассивное Долевые обязательства презумпция равенства долей; объем ответственности определен Солидарные обязательства долг неделим при солидарности; каждый субъект обязан либо управомочен требовать всю сумму...
29116. Очередность погашения требований по денежному обязательству 24 KB
  Сумма произведенного должником платежа недостаточная для исполнения денежного обязательства полностью при отсутствии иного соглашения погашает . прежде всего издержки кредитора по получению исполнения затем проценты лишь в оставшейся части основную сумму долга.
29117. Форма сделки. Государственная регистрация сделок 33.5 KB
  Форма сделки. Сделки совершаются устно или в письменной форме простой или нотариальной. Устные сделки Сделка для которой законом или соглашением сторон не установлена письменная простая или нотариальная форма может быть совершена устно. Сделки во исполнение договора заключенного в письменной форме могут по соглашению сторон совершаться устно.
29118. Недействительные сделки. Последствия недействительности сделок 30 KB
  Недействительные сделки. Оспоримые и ничтожные сделки Сделка недействительна по основаниям в силу признания ее таковой судом оспоримая сделка одна из сторон независимо от такого признания ничтожная сделка любое заинтересованное лицо. Общие положения о последствиях недействительности сделки Недействительная сделка не влечет юридических последствий. При недействительности сделки каждая из сторон обязана возвратить другой все полученное по сделке.
29119. Представительство в гражданском праве (понятие, основания возникновения, ограничение полномочий представителя) 31 KB
  Сделка совершенная одним лицом представителем от имени другого лица представляемого в силу полномочия основанного на доверенности указании закона либо акте уполномоченного на то государственного органа или органа местного самоуправления непосредственно создает изменяет и прекращает гражданские права и обязанности представляемого. Основания возникновения: Доверенность Акт органов МСУ Акт государственного органа На основании закона Не являются представителями: лица действующие хотя и в чужих интересах но от собственного имени...
29120. Виды законного представительства 32.5 KB
  Виды законного представительства Представительство сделка совершенная лицом представителем от имени другого лица представляемого в силу полномочия основанного на законе доверенности акта органов государственного управления местного управления непосредственно изменяет прекращает гражданские правоотношения. Виды представительства: Законное Фактическое Добровольное Административное Виды законного представительства: Представительство родителями родители выступают от имени своего ребенка до 18 лет в защиту прав и интересов в...