// fann_print_parameters Display the ANN parameters int sci_fann_print_parameters(char * fname) { int res; struct fann * result_ann = NULL; if (Rhs!=1) { Scierror(999,"%s usage: %s(ann_in)", fname, fname); return 0; } // Get the ann res = detect_fannlist(1); if (res==-1) return 0; result_ann = createCFannStructFromScilabFannStruct(1,&res); if (result_ann==NULL) { Scierror(999,"%s: Problem while creating the fann scilab structure\n",fname); return 0; } fann_print_parameters(result_ann); LhsVar(1) = 0; return 0; }
int main( int argc, char** argv ) { fann_type *calc_out; unsigned int i; int ret = 0; struct fann *ann; struct fann_train_data *data; printf("Creating network.\n"); ann = fann_create_from_file("xor_float.net"); if(!ann) { printf("Error creating ann --- ABORTING.\n"); return 0; } fann_print_connections(ann); fann_print_parameters(ann); printf("Testing network.\n"); data = fann_read_train_from_file("5K.txt"); for(i = 0; i < fann_length_train_data(data); i++) { fann_reset_MSE(ann); fann_scale_input( ann, data->input[i] ); calc_out = fann_run( ann, data->input[i] ); fann_descale_output( ann, calc_out ); printf("Result %f original %f error %f\n", calc_out[0], data->output[i][0], (float) fann_abs(calc_out[0] - data->output[i][0])); } printf("Cleaning up.\n"); fann_destroy_train(data); fann_destroy(ann); return ret; }
/*! ann:print_parameters() *# Prints the neural network's parameters *x ann:print_parameters() *- */ static int ann_print_parameters(lua_State *L) { struct fann **ann; ann = luaL_checkudata(L, 1, FANN_METATABLE); luaL_argcheck(L, ann != NULL, 1, "'neural net' expected"); fann_print_parameters(*ann); return 0; }
int main() { struct fann *ann; struct fann_train_data *train_data, *test_data; const float desired_error = (const float) 0.001; unsigned int max_neurons = 40; unsigned int neurons_between_reports = 1; printf("Reading data.\n"); train_data = fann_read_train_from_file("../benchmarks/datasets/two-spiral.train"); test_data = fann_read_train_from_file("../benchmarks/datasets/two-spiral.test"); fann_scale_train_data(train_data, 0, 1); fann_scale_train_data(test_data, 0, 1); printf("Creating network.\n"); ann = fann_create_shortcut(2, fann_num_input_train_data(train_data), fann_num_output_train_data(train_data)); fann_set_training_algorithm(ann, FANN_TRAIN_RPROP); fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC); fann_set_activation_function_output(ann, FANN_LINEAR_PIECE); fann_set_train_error_function(ann, FANN_ERRORFUNC_LINEAR); fann_print_parameters(ann); printf("Training network.\n"); fann_cascadetrain_on_data(ann, train_data, max_neurons, neurons_between_reports, desired_error); fann_print_connections(ann); printf("\nTrain error: %f, Test error: %f\n\n", fann_test_data(ann, train_data), fann_test_data(ann, test_data)); printf("Saving network.\n"); fann_save(ann, "two_spirali.net"); printf("Cleaning up.\n"); fann_destroy_train(train_data); fann_destroy_train(test_data); fann_destroy(ann); return 0; }
int main(void) { struct fann *ann = NULL; unsigned int i = 0; unsigned int num_neurons = 0; unsigned int num_inputs = 0; unsigned int num_outputs = 0; fann_seed_rand(); /* GENERATE RANDOM RECURRENT NETWORKS */ for (i=0; i<NUM_TESTS; i++) { num_inputs = rand()%5; num_neurons = rand()%10 + 1; // Number of outputs must be <= number of neurons do { num_outputs = rand()%10; } while (num_outputs > num_neurons); ann = fann_create_fully_recurrent(num_neurons, num_inputs, num_outputs); printf("\n\nCreated recurrent network (neurons=%d, inputs=%d, outputs=%d)\n", num_neurons, num_inputs, num_outputs); printf("\n-------------------------------------------\n"); printf("NET %d - CONNECTION MATRIX:\n", i); printf(" (I=input, b=bias, O=output, #=internal)\n"); printf("-------------------------------------------\n"); fann_print_connections(ann); printf("\n\n-------------------------------------------\n"); printf("NET %d - ANN PARAMETERS:\n", i); printf("-------------------------------------------\n"); fann_print_parameters(ann); /* CLEAN UP */ fann_destroy(ann); } return 0; }
void ann_list(ann_t *net) { fann_print_parameters((struct fann *) net); }
int main() { fann_type *calc_out; unsigned int i; int ret = 0; struct fann *ann; struct fann_train_data *data; printf("Creating network.\n"); #ifdef FIXEDFANN ann = fann_create_from_file("digitde_validation_fixed.net"); #else ann = fann_create_from_file("digitde_validation_float.net"); #endif if(!ann) { printf("Error creating ann --- ABORTING.\n"); return -1; } fann_print_connections(ann); fann_print_parameters(ann); printf("Testing network.\n"); #ifdef FIXEDFANN data = fann_read_train_from_file("digitde_validation_fixed.data"); #else data = fann_read_train_from_file("digitde_validation.data"); #endif for(i = 0; i < fann_length_train_data(data); i++) { fann_reset_MSE(ann); calc_out = fann_test(ann, data->input[i], data->output[i]); #ifdef FIXEDFANN printf("GG test (%d, %d) -> %d, should be %d, difference=%f\n", data->input[i][0], data->input[i][1], calc_out[0], data->output[i][0], (float) fann_abs(calc_out[0] - data->output[i][0]) / fann_get_multiplier(ann)); if((float) fann_abs(calc_out[0] - data->output[i][0]) / fann_get_multiplier(ann) > 0.2) { printf("Test failed\n"); ret = -1; } #else printf("GG test (%f, %f) -> %f, should be %f, difference=%f\n", data->input[i][0], data->input[i][1], calc_out[0], data->output[i][0], (float) fann_abs(calc_out[0] - data->output[i][0])); #endif } printf("Cleaning up.\n"); fann_destroy_train(data); fann_destroy(ann); return ret; }
int main() { struct fann *ann; struct fann_train_data *train_data, *test_data; const float desired_error = (const float)0.0; unsigned int max_neurons = 30; unsigned int neurons_between_reports = 1; unsigned int bit_fail_train, bit_fail_test; float mse_train, mse_test; unsigned int i = 0; fann_type *output; fann_type steepness; int multi = 0; enum fann_activationfunc_enum activation; enum fann_train_enum training_algorithm = FANN_TRAIN_RPROP; printf("Reading data.\n"); train_data = fann_read_train_from_file("../benchmarks/datasets/parity8.train"); test_data = fann_read_train_from_file("../benchmarks/datasets/parity8.test"); fann_scale_train_data(train_data, -1, 1); fann_scale_train_data(test_data, -1, 1); printf("Creating network.\n"); ann = fann_create_shortcut(2, fann_num_input_train_data(train_data), fann_num_output_train_data(train_data)); fann_set_training_algorithm(ann, training_algorithm); fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC); fann_set_activation_function_output(ann, FANN_LINEAR); fann_set_train_error_function(ann, FANN_ERRORFUNC_LINEAR); if(!multi) { /*steepness = 0.5;*/ steepness = 1; fann_set_cascade_activation_steepnesses(ann, &steepness, 1); /*activation = FANN_SIN_SYMMETRIC;*/ activation = FANN_SIGMOID_SYMMETRIC; fann_set_cascade_activation_functions(ann, &activation, 1); fann_set_cascade_num_candidate_groups(ann, 8); } if(training_algorithm == FANN_TRAIN_QUICKPROP) { fann_set_learning_rate(ann, 0.35); fann_randomize_weights(ann, -2.0,2.0); } fann_set_bit_fail_limit(ann, 0.9); fann_set_train_stop_function(ann, FANN_STOPFUNC_BIT); fann_print_parameters(ann); fann_save(ann, "cascade_train2.net"); printf("Training network.\n"); fann_cascadetrain_on_data(ann, train_data, max_neurons, neurons_between_reports, desired_error); fann_print_connections(ann); mse_train = fann_test_data(ann, train_data); bit_fail_train = fann_get_bit_fail(ann); mse_test = fann_test_data(ann, test_data); bit_fail_test = fann_get_bit_fail(ann); printf("\nTrain error: %f, Train bit-fail: %d, Test error: %f, Test bit-fail: %d\n\n", mse_train, bit_fail_train, mse_test, bit_fail_test); for(i = 0; i < train_data->num_data; i++) { output = fann_run(ann, train_data->input[i]); if((train_data->output[i][0] >= 0 && output[0] <= 0) || (train_data->output[i][0] <= 0 && output[0] >= 0)) { printf("ERROR: %f does not match %f\n", train_data->output[i][0], output[0]); } } printf("Saving network.\n"); fann_save(ann, "cascade_train.net"); printf("Cleaning up.\n"); fann_destroy_train(train_data); fann_destroy_train(test_data); fann_destroy(ann); return 0; }
int main( int argc, char ** argv) { float mse=1000; unsigned int num_train=R_NUM; unsigned int num_test=T_NUM; struct fann_train_data* data ; unsigned int i; const float desired_error = (const float) E_DES; const unsigned int epochs_between_reports = N_EPR; unsigned int bitf_limit=0; unsigned int bitf=bitf_limit+1; struct fann *ann; #if MIMO_FANN printf("MIMO fann\n"); #else printf("Old fann\n"); #endif #ifdef USE_XOR_DATA if (argc<2) { printf("Error: please supply a data file\n"); return -1; } printf("Using %s\n", argv[1]); data=fann_read_train_from_file(argv[1]); #else printf("Generating training data\n"); data = fann_create_train(S_DIM, I_DIM, O_DIM); for ( i=0; i< S_DIM; i++) { f1(data, i); } #endif ann=setup_net(data); #if VERBOSE fann_print_parameters(ann); #endif for (i=0; mse>desired_error && i!=num_train && bitf>bitf_limit; i++) { #if VERBOSE mse=train_epoch_debug(ann, data, i); #else mse=fann_train_epoch(ann, data); #endif bitf=fann_get_bit_fail(ann); if ( !((i) % epochs_between_reports)) printf("Epochs %8d. Current error: %.10f. Bit fail: %u\n", i+(!i), mse, bitf); /*printf ("[ %7u ] MSE Error : %.10e ###################\n", i, mse);*/ } printf("Epochs %8d. Current error: %.10f. Bit fail: %u\n", i+(!i), mse, bitf); printf("Testing network. %f\n", fann_test_data(ann, data)); gettimeofday(&tv_start,NULL); for (i=0; i!=num_test; i++) fann_run_data(ann, data); gettimeofday(&tv_now,NULL); report("---",0); #if 1 printf("Trying to save network\n"); #if MIMO_FANN fann_save(ann, "saved_mimo.net"); fann_destroy(ann); ann=fann_create_from_file("saved_mimo.net"); fann_save(ann, "saved_mimo2.net"); fann_destroy(ann); #else fann_save(ann, "saved_old.net"); #endif #endif return 0; }
int main() { fann_type *calc_out; unsigned int i; int ret = 0; struct fann *ann; struct fann_train_data *data; printf("Creating network.\n"); #ifdef FIXEDFANN ann = fann_create_from_file("./lib/fann/wc2fann/web_comp_fixed.net"); #else ann = fann_create_from_file("./lib/fann/wc2fann/web_comp_config.net"); #endif if(!ann) { printf("Error creating ann --- ABORTING.\n"); return -1; } fann_print_connections(ann); fann_print_parameters(ann); printf("Testing network.\n"); #ifdef FIXEDFANN data = fann_read_train_from_file("./lib/fann/wc2fann/web_comp_fixed.data"); #else data = fann_read_train_from_file("./lib/fann/wc2fann/data/selection.test"); #endif for(i = 0; i < fann_length_train_data(data); i++) { fann_reset_MSE(ann); calc_out = fann_test(ann, data->input[i], data->output[i]); #ifdef FIXEDFANN printf("Web Comp test (%d, %d) -> %d, should be %d, difference=%f\n", data->input[i][0], data->input[i][1], calc_out[0], data->output[i][0], (float) fann_abs(calc_out[0] - data->output[i][0]) / fann_get_multiplier(ann)); if((float) fann_abs(calc_out[0] - data->output[i][0]) / fann_get_multiplier(ann) > 0.2) { printf("Test failed\n"); ret = -1; } #else printf("Web Comp test (%f, %f) -> %f, should be %f, difference=%f\n", data->input[i][0], data->input[i][1], calc_out[0], data->output[i][0], (float) fann_abs(calc_out[0] - data->output[i][0])); //Web_Comp double answer = fann_abs(calc_out[0] - data->output[0][0]); FILE *output; output = fopen("./lib/fann/wc2fann/data/Web_Comp_Answer.txt","w"); fprintf(output, "%f", answer); fclose(output); #endif } printf("Cleaning up.\n"); fann_destroy_train(data); fann_destroy(ann); return ret; }
int main() { fann_type *calc_out; unsigned int i; int ret = 0; int max_expected_idx=0,max_predicted_idx=0,count=0; struct fann *ann; struct fann_train_data *data; printf("Creating network.\n"); #ifdef FIXEDFANN ann = fann_create_from_file("mnist_fixed1.net"); #else ann = fann_create_from_file("mnist_float.net"); #endif if(!ann) { printf("Error creating ann --- ABORTING.\n"); return -1; } fann_print_connections(ann); fann_print_parameters(ann); printf("Testing network.\n"); #ifdef FIXEDFANN data = fann_read_train_from_file("mnist.data"); #else data = fann_read_train_from_file("mnist.data"); #endif for(i = 0; i < fann_length_train_data(data); i++) { fann_reset_MSE(ann); calc_out = fann_test(ann, data->input[i], data->output[i]); #ifdef FIXEDFANN printf("XOR test (%d, %d) -> %d, should be %d, difference=%f\n", data->input[i][0], data->input[i][1], calc_out[0], data->output[i][0], (float) fann_abs(calc_out[0] - data->output[i][0]) / fann_get_multiplier(ann)); if((float) fann_abs(calc_out[0] - data->output[i][0]) / fann_get_multiplier(ann) > 0.2) { printf("Test failed\n"); ret = -1; } #else max_expected_idx = 0; max_predicted_idx = 0; for(int k=1;k<10;k++) { if(data->output[i][max_expected_idx] < data->output[i][k]) { max_expected_idx = k; } if(calc_out[max_predicted_idx] < calc_out[k]) { max_predicted_idx = k; } } printf("MNIST test %d Expected %d , returned=%d\n", i,max_expected_idx, max_predicted_idx); if(max_expected_idx == max_predicted_idx) count++; #endif } printf("Cleaning up.\n"); fann_destroy_train(data); fann_destroy(ann); printf("Number correct=%d\n",count); return ret; }