|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.05.2012, 15:08 | #1 |
Новичок
Джуниор
Регистрация: 15.05.2012
Сообщений: 1
|
Нейронные сети. Алгоритм обратного распространения ошибки
Такая проблема есть код, но в нем нет обучения, его нужно добавить я не знаю как) Помогите пожалуйста кто может.
#include "stdafx.h" #include <math.h> #include <iostream> using namespace std; const int N=12; const int N2=8; const int numlayer=1; int k1=0, k2=0, l; float f=0.6,s=0.7; double X[N]={-1.20,0.80,-1.60,-4.03,1.42,-1.60,0.92,1.03,-1.76,-2.02,1.25,-1.6}; double W[N2][numlayer]= { -1.20,0.80,-1.60,-4.03,1.42,-1.60,0.92,1.03 }; const double error=1.5; const double speed=0.05; int main() { setlocale(0,"rus"); double getnet(double*,double[][numlayer]); void display(double); double getout(double); double geterr(double,double); double newW(double,double,double); double out; do{ cout<<"Start weight: "; for(int i=0;i<N2;i++) for(int j=0;j<numlayer;j++) cout<<W[i][j]<<" "; cout<<endl; double net=getnet(X,W); out=getout(net); double err=geterr(error,net); if (out<f)k2=k2+1; if (out<s)k1=k1+1; cout<<"Out: ";display(net); cout<<"Error: ";display(err); newW(error,speed,out); for(int i=0;i<N2;i++) for(int j=0;j<numlayer;j++) cout<<W[i][j]<<" "; }while(out>0.60); if(out>1) cout<<"\n Won first class"<<endl; else cout<<"\n Won second class"<<endl; cout<<endl; cout<<"func activation: ";display(out); cout<<"oshibki 1 klassa: ";display(k1); cout<<"oshibki 2 klassa: ";display(k2); system("pause"); return 0; } double getnet(double* X,double W[][numlayer]) { double net=0.0; for(int i=0;i<N2;i++) for(int j=0;j<numlayer;j++) net+=X[i]*W[i][j]; return net; } double getout(double net) { return (1/(1+exp(-net))); } double geterr(double err,double net) { return (err-net)*net*(1-net); } double newW(double err,double speed,double out) { double neww=speed*err*out; cout<<"Koefficient obnovlenya vesa: "<<neww<<endl; cout<<"Obnovlennie vesa: "; for(int i=0;i<N2;i++) for(int j=0;j<numlayer;j++) W[i][j]+=neww; return W[N2][numlayer]; } void display(double num) { cout<<num<<endl; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нейронные сети | Nina+ | Общие вопросы по программированию, компьютерный форум | 3 | 23.05.2012 19:47 |
Нейронные сети | Sanchos | Помощь студентам | 5 | 09.08.2011 17:47 |
программа для изучения нейросетей -метод обратного распространения | maximp | Фриланс | 1 | 10.11.2010 18:11 |
Нейронные сети. | Asblue | Помощь студентам | 4 | 09.11.2010 08:13 |
Нейронные сети | russian-stalker | Свободное общение | 8 | 26.08.2010 21:57 |