for(int epoch=0;epoch<times;epoch++){ // for each training epoch:
// if (fullytrained) break;
// cout<<"---------------------"<<endl;
double in_to_hidden[NUM_HIDDEN];
double a_hidden[NUM_HIDDEN];
double delta_hidden[NUM_HIDDEN];
double in_to_output[NUM_OUTPUT];
double a_output[NUM_OUTPUT];
double delta_output[NUM_OUTPUT];
double err_output[NUM_OUTPUT]; // errors
for (curr_pattern_idx=0; curr_pattern_idx<number_of_pattern_used ; curr_pattern_idx++) {
/*
curr_pattern_idx++; // for each training pattern p:
if (curr_pattern_idx>=NUM_PATTERNS)
curr_pattern_idx=0;
*/
CalAll(xp[curr_pattern_idx], in_to_hidden, a_hidden, in_to_output, a_output);
// cout <<endl;
for(int i=0;i<NUM_OUTPUT;i++){ // for each output:
err_output[i] = yp[curr_pattern_idx][i] - a_output[i]; // sigmoid(in) is our prediction
delta_output[i] = err_output[i] * derivative( in_to_output[i] );
// cout << "delta_out["<<i<<"]= "<<err_output[i]<<"*g'("<< in_to_output[i]<<")= "<<delta_output[i]<<endl ;
}
// cout <<"Err: "<< (err_output[0]+err_output[1])/2 << "\n"; // print out the errors for each output
/* if ( abs ((err_output[0]+err_output[1])/2) < 0.00001 )
{
fullytrained=true;
cout <<"Fully trained!" << endl;
break;
}
*/
//------------------------------------------
// cout<<endl;
for(int j=0;j<NUM_HIDDEN;j++){
double tmp = 0.0;
// cout<<"sum=";
for(int i=0; i<NUM_OUTPUT; i++) { // compute delta using back-propagation
tmp+= delta_output[i] * weights2[i][j];
// cout<<delta_output[i]<<"*"<<weights2[j][i]<<"+";
}
// cout<<"="<<tmp<<endl;
delta_hidden[j] = derivative(in_to_hidden[j]) * tmp;
// cout << "delta_hidden["<<j<<"]= "<<"g'("<< in_to_hidden[j]<<")*"<<tmp<<"= "<<delta_hidden[j]<<endl ;
}
//-------------------------------------------
// cout <<endl;
for(int i=0;i<NUM_OUTPUT;i++){ // for each output adjust the weights:
weights2[i][0] = weights2[i][0] + alpha * (double)(-1) * delta_output[i];
for(int j=1;j<=NUM_HIDDEN;j++){
// cout<< "w2["<<j<<"]["<<i<<"]="<<weights2[j][i];
weights2[i][j] = weights2[i][j] + alpha * a_hidden[j-1] * delta_output[i];
// cout << &