#define PARA_UTIL_SOURCE_CODE #include "para-util.h" void SetDefaultParameter(CONTROL_INFO *controlInfo) { /* Set file names to be null initially */ controlInfo->unsmoothedFile[0] = '\0'; controlInfo->inputFile[0] = '\0'; controlInfo->outFile[0] = '\0'; controlInfo->seedFile[0] = '\0'; controlInfo->networkInFile[0] = '\0'; controlInfo->networkOutFile[0] = '\0'; strcpy(controlInfo->networkOutFile,"network.dat"); /* default global inhibition */ controlInfo->global_inhibitor = 20; controlInfo->grayThreshold = 200.; controlInfo->seed = 517; controlInfo->hidden_unit = 10; controlInfo->output_unit = 1; controlInfo->input_unit = 5; controlInfo->kernel_size =1; controlInfo->ALPHA = 0.9; controlInfo->BETA = 0.50; controlInfo->ETA = 0.2; controlInfo->tol = 0.01; controlInfo->max_iteration = 100000; controlInfo->forced_training = 0; return; } void DisplayParameter(CONTROL_INFO *controlInfo) { int i,j,wsize; printf("\nNow Parameters are set as follows.\n"); printf("\tTraining file:\t%s\n", controlInfo->inputFile); printf("\tOutput File Prefix:\t%s\n",controlInfo->outFile); printf("\tSeed for this running:\t%d\n",controlInfo->seed); printf("\tNetwork weight saved to: \t%s\n", controlInfo->networkOutFile); if ( controlInfo->seedFile[0] != 0) { printf("\tSeed File: \t%s\n",controlInfo->seedFile); } if (controlInfo->networkInFile[0] != 0) { printf("\tNetwork weight file: \t%s\n", controlInfo->networkInFile); } printf("\tAccepted error tolerance: %8.6f\n", controlInfo->tol); printf("\tMaximum of iterations: %d\n", controlInfo->max_iteration); printf("\tMLP Network architecture: \n"); printf("\t\t%d units in first layer\n", controlInfo->input_unit); printf("\t\t%d units in the hidden layer\n", controlInfo->hidden_unit); printf("\t\t%d units in the output layer\n", controlInfo->output_unit); printf("\tWeight updating parameters: "); printf("ALPHA = %6.4f BETA = %6.4f ETA = %6.4f\n", controlInfo->ALPHA, controlInfo->BETA, controlInfo->ETA); printf("End of Parameters.\n\n"); return; } int LoadParameter(char *fName,CONTROL_INFO *controlInfo) { char string[MAXFILENAME]; FILE *fp; /*SetDefaultParameter(controlInfo); */ if ( (fp = fopen(fName,"rb")) == NULL) return -1; /* reading all parameters */ while(fscanf(fp,"%s",string) >0) { if (string[0] =='#') { /* it is a comment */ while (getc(fp) != '\n'); continue; } if (strcasecmp(string,"input-file") == 0) { fscanf(fp,"%s",controlInfo->inputFile); continue; } if (strcasecmp(string,"original-image") == 0) { fscanf(fp,"%s",controlInfo->unsmoothedFile); continue; } if (strcasecmp(string,"output-image") == 0) { fscanf(fp,"%s",controlInfo->outFile); continue; } if (strcasecmp(string,"network-in") == 0) { fscanf(fp,"%s",controlInfo->networkInFile); continue; } if (strcasecmp(string,"network-out") == 0) { fscanf(fp,"%s",controlInfo->networkOutFile); continue; } if (strcasecmp(string,"Gray-threshold") == 0) { fscanf(fp,"%f",&(controlInfo->grayThreshold)); controlInfo->global_inhibitor = 256./(1.0+controlInfo->grayThreshold); continue; } if (strcasecmp(string,"forced-training") == 0) { fscanf(fp,"%d", &(controlInfo->forced_training)); continue; } if (strcasecmp(string,"Global-inhibition") == 0) { fscanf(fp,"%f",&(controlInfo->global_inhibitor)); controlInfo->grayThreshold = 256./controlInfo->global_inhibitor - 1; continue; } if (strcasecmp(string,"seed") == 0) { fscanf(fp,"%d",&(controlInfo->seed)); continue; } if (strcasecmp(string,"seed-file") == 0) { fscanf(fp,"%s",controlInfo->seedFile); continue; } if (strcasecmp(string,"kernel-size") == 0) { fscanf(fp,"%d",&(controlInfo->kernel_size)); continue; } if (strcasecmp(string,"hidden-unit") ==0) { fscanf(fp,"%d",&(controlInfo->hidden_unit)); continue; } if (strcasecmp(string,"network-unit") ==0) { fscanf(fp,"%d%d%d", &(controlInfo->input_unit), &(controlInfo->hidden_unit), &(controlInfo->output_unit)); continue; } if (strcasecmp(string,"ALPHA") == 0) { fscanf(fp,"%lf", &(controlInfo->ALPHA)); continue; } if (strcasecmp(string,"BETA") == 0) { fscanf(fp,"%lf", &(controlInfo->BETA)); continue; } if (strcasecmp(string,"ETA") == 0) { fscanf(fp,"%lf", &(controlInfo->ETA)); continue; } if (strcasecmp(string,"max-iteration") == 0) { fscanf(fp,"%d", &(controlInfo->max_iteration)); continue; } if (strcasecmp(string,"tol") == 0) { fscanf(fp,"%lf", &(controlInfo->tol)); continue; } printf("\nInvalid choice: %s\n",string); while (getc(fp) !='\n'); } fclose(fp); return 0; }