"justify">} [] sloi=new int [layers + 1]; [0]=in; [1]=subS; (int i=0; i lt; subS; i ++)
{[i + 2]=sub [i];
} [2 + subS]=out;
{outNet=new ObjectOutputStream (new FileOutputStream (fileName)) ;. writeObject (sloi); (int i=0; i lt; layers; i ++)
{= (Layer) massivLayers.get (i) ;. writeObject (l);
}. close ();
} (Exception e)
{. printStackTrace ();
}
}
Параметром цього методу є рядок fileToSave, що описує шлях до файлу в який користувач хоче зберегти нейронну мережу.
Для завантаження моделі нейронної мережі з файлу в класі нейронної мережі є конструктор, який заповнює ті ж поля що і конструктор наведений у лістингу 3.8, але тільки привласнюються значення програма зчитує з файлу, шлях до якого заданий параметром даного конструктора в рядку fileToOpen.
Лістинг 3.10 - Конструктор класу нейронної мережі, що викликається при відкритті нейронної мережі з файлу
public Net (Frame owner, String fileToOpen)
{
{inNet=new ObjectInputStream (new FileInputStream (fileToOpen)); [] newSloi=(int []) inNet.readObject ();=newSloi [0];=newSloi [1];=new int [subS]; (int i=0; i lt; subS; i ++)
{[i]=newSloi [i + 2];
}=newSloi [2 + subS];=subS + 2;=new ArrayList (layers); (int i=0; i lt; layers; i ++)
{= (Layer) inNet.readObject () ;. add (l);
}. close ();
} (Exception e)
{. printStackTrace ();
}=new VvodKartinki (owner, in);
}
При виконанні якого-небудь з конструкторів вся інформація про попередньому об'єкті класу нейронної мережі видаляється, тому програма розрахована на роботу тільки з однією моделлю нейронної мережі.
До об'єкту класу нейронної мережі застосовні методи навчання (цей метод буде докладніше описано нижче), розрахунку мережею деякої задачі, а також відображення інформації про об'єкт в текстовій област?? вікна програми. Всі ці методи наведені в додатку Б.
3.3.1 Розробка модуля навчання нейронної мережі з використанням алгоритму зворотного поширення помилки
Алгоритм зворотного поширення помилки був докладно описаний у пункті 2.5.4. Відповідно до нього був написаний метод для об'єкта нейронної мережі. Повністю цей метод наведено в описі класу нейронної мережі в додатку Б. Сама реалізація алгоритму зворотного поширення помилки представлена ??в лістингу 3.11.
Лістинг 3.11 - Реалізація алгоритму зворотного поширення помилки
public void Study (JTextArea txtArea)
{. append ( n n Буде навчання мережі n ); =JOptionPane.showInputDialog ( Введіть величину допустимої середньоквадратичне помилки );
Em=Double.parseDouble (input);
input=JOptionPane.showInputDialog ( Введіть норму навчання, в межах від 0 до 1 );
normaObu4eniya=Double.parseDouble (input);
input=JOptionPane.showInputDialog ( Скільки буде зразків в епосі? );
int epoxa=Integer.parseInt (input);
massivStudy=new ArrayList ();=(Layer) massivLayers.get (0);=l.getVIxodi ();=(Layer) massivLayers.get (massivLayers.size () - 1); =l.getVIxodi (); (int j=0; j lt; epoxa; j ++)
{= new double [stIn]; (vvod.showIt ())
{= vvod.getMassiv ();
}
{. append ( n СТАЛАСЯ ПОМИЛКА n ) ;;
}=new double [stOut] ;. setMessage ( Що на виході нейронної мережі );
if (vvodCifr.showIt ())
{= vvodCifr.getMassiv ();
}
{. append ( n СТАЛАСЯ ПОМИЛКА n ) ;;
} stAr=new StudyArrays (stIn, studyArrayIN, stOut, studyArrayOUT) ;. add (stAr);
}. trimToSize (); (! STOP)
{= new double [epoxa]; (int i=0; i lt; epoxa; i ++)
{s=(StudyArrays) massivStudy.get (i);=new double [s.getIN ()];=s.getArrayIn (); (int j=0; j lt; layers; j ++ )
{= (Layer) massivLayers.get (j); (j == 0)
{= new double [l.getVIxodi ()];=l.makeRas4et (j, tempArray);
}
{= new double [l.getVIxodi ()];=l.makeRas4et (j, resultStudy);=new double [l.getVIxodi ()]; ...