From fdcbc2db4e5b316e70b6da9404233cfa06284137 Mon Sep 17 00:00:00 2001 From: hellboy Date: Wed, 24 Mar 2010 16:18:57 +0100 Subject: [PATCH] gnet: stderr/stdout, silent option --- gnet/gnet_run.c | 30 ++++++++++++++++++--------- gnet/gnet_train.c | 62 ++++++++++++++++++++++++++++++++++--------------------- 2 files changed, 58 insertions(+), 34 deletions(-) diff --git a/gnet/gnet_run.c b/gnet/gnet_run.c index 18adf28..5a8dd53 100644 --- a/gnet/gnet_run.c +++ b/gnet/gnet_run.c @@ -15,12 +15,14 @@ int main(int argc, char ** argv) { char * input_data_filename=0; FILE * input_file = stdin; + int silent = 0; /* Parse input */ { static struct option long_options[] = { { "test-data-file", required_argument, NULL, 't' }, { "input-data-file", required_argument, NULL, 'i' }, { "help", no_argument, NULL, 'h' }, + { "silent", no_argument, NULL, 's' }, { NULL, no_argument, NULL, 0 } }; int c; @@ -29,6 +31,7 @@ int main(int argc, char ** argv) { case 't': test_data_filename = optarg; break; case 'i': input_data_filename = optarg; break; case 'h': print_help(); exit(1); break; + case 's': silent=1; break; case '?': break; default: exit(1); } @@ -38,13 +41,14 @@ int main(int argc, char ** argv) { } if( ! net_input_name ){ fprintf(stderr, "No network file specified, see --help.\n"); exit(1); } -//#ifdef DEBUG -#if 1 - fprintf(stderr,"Test input file: %s\n", test_data_filename); - fprintf(stderr,"Input file: %s\n", input_data_filename); - fprintf(stderr,"Net input file: %s\n", net_input_name); - fprintf(stderr,"\n"); -#endif + + if(! silent){ + printf("Test input file: %s\n", test_data_filename); + printf("Input file: %s\n", input_data_filename); + printf("Net input file: %s\n", net_input_name); + printf("\n"); + } + /* Load Net */ struct fann *ann = fann_create_from_file(net_input_name); if( ! ann ){ fprintf(stderr, "Error reading network file '%s'.\n", net_input_name); exit(1); } @@ -53,7 +57,6 @@ int main(int argc, char ** argv) { if( test_data_filename ){ struct fann_train_data *test_data; - fprintf(stderr,"Testing network.\n"); test_data = fann_read_train_from_file(test_data_filename); if( ! test_data){ fprintf(stderr, "Error reading file '%s'.\n", test_data_filename); @@ -63,7 +66,7 @@ int main(int argc, char ** argv) { for(i = 0; i < fann_length_train_data(test_data); i++) { fann_test(ann, test_data->input[i], test_data->output[i]); } - fprintf(stderr,"MSE error on test data: %f\n\n", fann_get_MSE(ann)); + printf("MSE error on test data: %f\n\n", fann_get_MSE(ann)); fann_destroy_train(test_data); } if( ! input_data_filename ){ @@ -86,7 +89,8 @@ int main(int argc, char ** argv) { fann_type * input_vector = (fann_type *) malloc( input_vector_len * sizeof(fann_type)); fann_type * output_vector; - fprintf(stderr, "Reading input:\n"); + if(! silent) + printf( "Reading input:\n"); while(1){ /* Read the input vector */ unsigned i; @@ -121,6 +125,12 @@ printf("Usage: gnet_run [OPTIONS] NETWORK_FILENAME\n\ Trains a neural network from the NETWORK_FILENAME saved by gnet_train.\n\ \n\ OPTIONS\n\ +-h\n\ +--help\n\ + Prints this ultimate help\n\ +-s\n\ +--silent\n\ + Do not print unnecessary info\n\ -t filename\n\ --test-data_file=filename\n\ Runs the network against test data and outputs MSE.\n\ diff --git a/gnet/gnet_train.c b/gnet/gnet_train.c index b7a0468..c74a94d 100644 --- a/gnet/gnet_train.c +++ b/gnet/gnet_train.c @@ -24,6 +24,7 @@ int main(int argc, char ** argv) { char * net_output_name = "go_net.net"; char * train_data_name=0; + int silent = 0; /* Parse input */ { static struct option long_options[] = { @@ -34,11 +35,12 @@ int main(int argc, char ** argv) { { "learning-momentum", required_argument, NULL, 'm' }, { "net-output-file", required_argument, NULL, 'o' }, { "help", no_argument, NULL, 'h' }, + { "silent", no_argument, NULL, 's' }, { "activation-function", no_argument, NULL, 'a' }, { NULL, no_argument, NULL, 0 } }; int c; - while( (c = getopt_long(argc, argv, "hl:n:p:e:m:o:a:", long_options, &optind)) != -1 ){ + while( (c = getopt_long(argc, argv, "hsl:n:p:e:m:o:a:", long_options, &optind)) != -1 ){ switch (c){ case 'l': num_layers = atoi(optarg); break; case 'n': num_neurons_hidden = atoi(optarg); break; @@ -47,6 +49,7 @@ int main(int argc, char ** argv) { case 'm': learning_momentum = atof(optarg); break; case 'o': net_output_name = optarg; break; case 'h': print_help(); exit(1); break; + case 's': silent = 1; break; case 'a': activation_function = optarg; break; case '?': break; default: exit(1); @@ -68,18 +71,17 @@ int main(int argc, char ** argv) { actfc= SIGMOID; else{ fprintf(stderr, "Activation function must be either 'linear' or 'sigmoid' (default).\n"); exit(1);} -//#ifdef DEBUG -#if 1 - printf("Layers: %u\n", num_layers); - printf("Neurons hidden: %u\n", num_neurons_hidden); - printf("Max epochs: %u\n", max_epochs); - printf("Desired error: %f\n", desired_error); - printf("Learning momentum: %f\n", learning_momentum); - printf("Net output file: %s\n", net_output_name); - printf("Train data file: %s\n", train_data_name); - printf("Activation function: %s\n", activation_function); - printf("\n"); -#endif + if( !silent ){ + printf("Layers: %u\n", num_layers); + printf("Neurons hidden: %u\n", num_neurons_hidden); + printf("Max epochs: %u\n", max_epochs); + printf("Desired error: %f\n", desired_error); + printf("Learning momentum: %f\n", learning_momentum); + printf("Net output file: %s\n", net_output_name); + printf("Train data file: %s\n", train_data_name); + printf("Activation function: %s\n", activation_function); + printf("\n"); + } /* Create the net */ struct fann *ann=0; @@ -89,13 +91,15 @@ int main(int argc, char ** argv) { train_data = fann_read_train_from_file(train_data_name); /* Die if error */ if( ! train_data){ - printf( "Error reading file '%s'.\n", train_data_name); + fprintf(stderr, "Error reading file '%s'.\n", train_data_name); exit(1); } - if( num_layers == 1) - fprintf(stderr, "Warning, network has only one layer.\n"); - if( num_layers >= 10) - fprintf(stderr, "Warning, network has more than 10 layers.\n"); + if( ! silent ){ + if( num_layers == 1) + fprintf(stderr, "Warning, network has only one layer.\n"); + if( num_layers >= 10) + fprintf(stderr, "Warning, network has more than 10 layers.\n"); + } unsigned int * layers = ( unsigned int * ) malloc( num_layers * sizeof(unsigned int) ); @@ -107,10 +111,12 @@ int main(int argc, char ** argv) { layers[num_layers - 1] = train_data->num_output; - printf("Network architecture:\n ->"); - for( i = 0 ; i < num_layers ; i++) - printf("%d-", layers[i]); - printf(">\n\n"); + if( ! silent ){ + printf("Network architecture:\n ->"); + for( i = 0 ; i < num_layers ; i++) + printf("%d-", layers[i]); + printf(">\n\n"); + } } //printf("Creating network.\n"); @@ -133,7 +139,8 @@ int main(int argc, char ** argv) { } /* Train the net */ - printf("Training network:\n"); + if( ! silent ) + printf("Training network:\n"); //fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL); //fann_set_training_algorithm(ann, FANN_TRAIN_QUICKPROP); @@ -147,7 +154,8 @@ int main(int argc, char ** argv) { /* Save the net */ fann_save(ann, net_output_name); - printf("\nNetwork saved.\n"); + if( ! silent ) + printf("\nNetwork saved.\n"); /* Clean the net */ @@ -172,6 +180,12 @@ another_output_vector\n\ EOF\n\ \n\ OPTIONS\n\ +-h\n\ +--help\n\ + Prints this ultimate help\n\ +-s\n\ +--silent\n\ + Do not print unnecessary info\n\ -l int_number\n\ --layers=int_number\n\ Number of network layers\n\ -- 2.11.4.GIT