void main() { NET Net; BOOL Stop; REAL MinTestError; InitializeRandoms(); GenerateNetwork(&Net); RandomWeights(&Net); InitializeApplication(&Net); Stop = FALSE; MinTestError = MAX_REAL; do { TrainNet(&Net, 10); TestNet(&Net); if (TestError < MinTestError) { fprintf(f, " - saving Weights ..."); MinTestError = TestError; SaveWeights(&Net); } else if (TestError > 1.2 * MinTestError) { fprintf(f, " - stopping Training and restoring Weights ..."); Stop = TRUE; RestoreWeights(&Net); } } while (NOT Stop); TestNet(&Net); EvaluateNet(&Net); FinalizeApplication(&Net); }
void main() { NET Net; int ct = 0; InitializeRandoms(); GenerateNetwork(&Net); RandomWeights(&Net); InitializeApplication(&Net); do { TrainNet(&Net, 10); if (ct % 10 == 0) { fprintf(f, "Epoch = %d\n",ct); EvaluateNet(&Net); } ct++; } while (ct<MAXCT); fprintf(f, "\n"); fprintf(f, "Finial Epoch:\n"); EvaluateNet(&Net); FinalizeApplication(&Net); }
void main() { NET Net; InitializeRandoms(); GenerateNetwork(&Net); RandomWeights(&Net); InitializeApplication(&Net); TrainNet(&Net); WriteNet(&Net); FinalizeApplication(&Net); }
void MultiLayerPerceptron::Run(const char* fname, const int& maxiter) { int countTrain = 0; int countLines = 0; bool Stop = false; bool firstIter = true; double dMinTestError = 0.0; InitializeRandoms(); RandomWeights(); do { countLines += Train(fname); Test(fname); countTrain++; if(firstIter) { dMinTestError = dAvgTestError; firstIter = false; } printf( "%i \t TestError: %f", countTrain, dAvgTestError); if ( dAvgTestError < dMinTestError) { printf(" -> saving weights\n"); dMinTestError = dAvgTestError; SaveWeights(); } else if (dAvgTestError > 1.2 * dMinTestError) { printf(" -> stopping training and restoring weights\n"); Stop = true; RestoreWeights(); } else { printf(" -> ok\n"); } } while ( (!Stop) && (countTrain<maxiter) ); printf("bye\n"); }
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); }