void TrainNet(NET* Net, INT Epochs) { INT Year, n; REAL Output[M]; for (n=0; n<Epochs*NUM_TAB; n++) { Year = RandomEqualINT(0,NUM_TAB-1); SimulateNet(Net, D12[Year], Output, xy[Year], TRUE); } }
void TestNet(NET* Net) { INT Year; REAL Output[M]; TrainError = 0; for (Year=TRAIN_LWB; Year<=TRAIN_UPB; Year++) { SimulateNet(Net, &(Sunspots[Year-N]), Output, &(Sunspots[Year]), FALSE); TrainError += Net->Error; } TestError = 0; for (Year=TEST_LWB; Year<=TEST_UPB; Year++) { SimulateNet(Net, &(Sunspots[Year-N]), Output, &(Sunspots[Year]), FALSE); TestError += Net->Error; } fprintf(f, "\nNMSE is %0.3f on Training Set and %0.3f on Test Set", TrainError / TrainErrorPredictingMean, TestError / TestErrorPredictingMean); }
void TrainNet(NET* Net, INT Epochs) { INT Year, n; REAL Output[M]; for (n=0; n<Epochs*TRAIN_YEARS; n++) { Year = RandomEqualINT(TRAIN_LWB, TRAIN_UPB); SimulateNet(Net, &(Sunspots[Year-N]), Output, &(Sunspots[Year]), TRUE); } }
void EvaluateNet(NET* Net) { INT Year; REAL Output [M]; REAL Output_[M]; fprintf(f, "\n\n\n"); fprintf(f, "Year Sunspots Open-Loop Prediction Closed-Loop Prediction\n"); fprintf(f, "\n"); for (Year=EVAL_LWB; Year<=EVAL_UPB; Year++) { SimulateNet(Net, &(Sunspots [Year-N]), Output, &(Sunspots [Year]), FALSE); SimulateNet(Net, &(Sunspots_[Year-N]), Output_, &(Sunspots_[Year]), FALSE); Sunspots_[Year] = Output_[0]; fprintf(f, "%d %0.3f %0.3f %0.3f\n", FIRST_YEAR + Year, Sunspots[Year], Output [0], Output_[0]); } }
void main() { NET Net; REAL Error; BOOL Stop; INT n,m; InitializeRandoms(); GenerateNetwork(&Net); RandomWeights(&Net); InitializeApplication(&Net); do { Error = 0; Stop = TRUE; for (n=0; n<NUM_DATA; n++) { SimulateNet(&Net, Input[n], Output[n], FALSE, FALSE); Error = MAX(Error, Net.Error); Stop = Stop AND (Net.Error < Net.Epsilon); } Error = MAX(Error, Net.Epsilon); printf("Training %0.0f%% completed ...\n", (Net.Epsilon / Error) * 100); if (NOT Stop) { for (m=0; m<10*NUM_DATA; m++) { n = RandomEqualINT(0, NUM_DATA-1); SimulateNet(&Net, Input[n], Output[n], TRUE, FALSE); } } } while (NOT Stop); for (n=0; n<NUM_DATA; n++) { SimulateNet(&Net, Input[n], Output[n], FALSE, TRUE); } FinalizeApplication(&Net); }
void EvaluateNet(NET* Net) { INT Year; REAL Output [M],TrainError=0.0; for (Year=0; Year<NUM_TAB; Year++) { SimulateNet(Net, D12[Year], Output, xy[Year], FALSE); TrainError += Net->Error; fprintf(f, "%f %f -> %f %f (ans) : %f %f (Output)\n", D12[Year][0],D12[Year][1], xy[Year][0],xy[Year][1], Output[0],Output[1]); } fprintf(f, "Err= %f\n",TrainError); fprintf(f, "\n"); }