[libfann] 201/242: bugfix to fann_backpropagate_MSE

Christian Kastner chrisk-guest at moszumanska.debian.org
Sat Oct 4 21:10:44 UTC 2014


This is an automated email from the git hooks/post-receive script.

chrisk-guest pushed a commit to tag Version2_0_0
in repository libfann.

commit 4606261815b24872be180bc222ceceba456fb217
Author: Steffen Nissen <lukesky at diku.dk>
Date:   Mon Oct 24 20:48:47 2005 +0000

    bugfix to fann_backpropagate_MSE
---
 benchmarks/.cvsignore      |  7 +++++++
 benchmarks/benchmark.sh    | 20 ++++++++++----------
 benchmarks/performance.cc  |  6 +++---
 benchmarks/quality.cc      | 21 ++++++++++++---------
 benchmarks/quality_fixed.c |  1 +
 examples/cascade_train.c   | 25 +++++++++++--------------
 examples/robot.c           |  3 ++-
 src/fann_train.c           | 11 +++++------
 src/include/fann_cascade.h |  2 +-
 9 files changed, 52 insertions(+), 44 deletions(-)

diff --git a/benchmarks/.cvsignore b/benchmarks/.cvsignore
index b76bdbe..9c9140f 100644
--- a/benchmarks/.cvsignore
+++ b/benchmarks/.cvsignore
@@ -1 +1,8 @@
 *.net *.out *_fixed_test_* *_fixed_train_*
+*.out
+parity
+performance
+*_fixed
+quality
+shuffle
+two-spirals
diff --git a/benchmarks/benchmark.sh b/benchmarks/benchmark.sh
index 4433d1f..1fb627e 100755
--- a/benchmarks/benchmark.sh
+++ b/benchmarks/benchmark.sh
@@ -13,21 +13,21 @@ function benchmark_algorithm() {
 function benchmark_problem() {
     #rm -f *_fixed.net
     algo="fann_cascade"; benchmark_algorithm;
-#    algo="fann_rprop"; benchmark_algorithm;
+    algo="fann_rprop"; benchmark_algorithm;
     #./quality_fixed $prob.$algo.train.out_fixed_train $prob.$algo.train.out_fixed_test $prob.$algo.fixed_train.out $prob.$algo.fixed_test.out *_fixed.net
     
 	
-#	algo="fann_rprop_stepwise"; benchmark_algorithm;
-#    algo="fann_quickprop"; benchmark_algorithm;
-    #algo="fann_quickprop_stepwise"; benchmark_algorithm;
-#    algo="fann_batch"; benchmark_algorithm;
-    #algo="fann_batch_stepwise"; benchmark_algorithm;
-#    algo="fann_incremental"; benchmark_algorithm;
-    #algo="fann_incremental_stepwise"; benchmark_algorithm;
+    algo="fann_rprop_stepwise"; benchmark_algorithm;
+    algo="fann_quickprop"; benchmark_algorithm;
+    algo="fann_quickprop_stepwise"; benchmark_algorithm;
+    algo="fann_batch"; benchmark_algorithm;
+    algo="fann_batch_stepwise"; benchmark_algorithm;
+    algo="fann_incremental"; benchmark_algorithm;
+    algo="fann_incremental_stepwise"; benchmark_algorithm;
 
     #comment out two following lines if the libraries are not available
-#    algo="lwnn"; benchmark_algorithm;
-#    algo="jneural"; benchmark_algorithm;
+    algo="lwnn"; benchmark_algorithm;
+    algo="jneural"; benchmark_algorithm;
 }
 
 #comment out some of the lines below if some of the problems should not be benchmarked
diff --git a/benchmarks/performance.cc b/benchmarks/performance.cc
index 7d09a87..ceff932 100644
--- a/benchmarks/performance.cc
+++ b/benchmarks/performance.cc
@@ -102,7 +102,7 @@ void performance_benchmark_fann_noopt(FILE * out, fann_type * input,
 	unsigned int i, total_connections;
 	fann_type *output;
 
-	struct fann *ann = fann_create(1, 0.7, 4,
+	struct fann *ann = fann_create_standard(4,
 								   num_neurons, num_neurons, num_neurons, num_neurons);
 
 	//just to fool the optimizer into thinking that the network is not fully connected
@@ -130,7 +130,7 @@ void performance_benchmark_fann_thres(FILE * out, fann_type * input,
 	unsigned int i, total_connections;
 	fann_type *output;
 
-	struct fann *ann = fann_create(1, 0.7, 4,
+	struct fann *ann = fann_create_standard(4,
 								   num_neurons, num_neurons, num_neurons, num_neurons);
 
 	fann_set_activation_function_hidden(ann, FANN_THRESHOLD);
@@ -160,7 +160,7 @@ void performance_benchmark_fann(bool stepwise, FILE * out, fann_type * input,
 	unsigned int i, total_connections;
 	fann_type *output;
 
-	struct fann *ann = fann_create(1, 0.7, 4,
+	struct fann *ann = fann_create_standard(4,
 								   num_neurons, num_neurons, num_neurons, num_neurons);
 
 	if(stepwise)
diff --git a/benchmarks/quality.cc b/benchmarks/quality.cc
index 417313a..f24925b 100644
--- a/benchmarks/quality.cc
+++ b/benchmarks/quality.cc
@@ -152,7 +152,7 @@ void quality_benchmark_jneural(struct fann_train_data *train_data,
 }
 #endif
 
-void quality_benchmark_fann(bool stepwise, int training_algorithm,
+void quality_benchmark_fann(bool stepwise, fann_train_enum training_algorithm,
 							char *filename,
 							struct fann_train_data *train_data,
 							struct fann_train_data *test_data,
@@ -172,12 +172,12 @@ void quality_benchmark_fann(bool stepwise, int training_algorithm,
 
 	if(num_neurons_hidden2)
 	{
-		ann = fann_create(1, 0.7, 4,
+		ann = fann_create_standard(4,
 						  num_input, num_neurons_hidden1, num_neurons_hidden2, num_output);
 	}
 	else
 	{
-		ann = fann_create(1, 0.7, 3, num_input, num_neurons_hidden1, num_output);
+		ann = fann_create_standard(3, num_input, num_neurons_hidden1, num_output);
 	}
 
 	fann_set_training_algorithm(ann, training_algorithm);
@@ -275,7 +275,7 @@ void quality_benchmark_cascade(struct fann_train_data *train_data,
 	fann_type *output;
 	struct fann *ann;
 
-	ann = fann_create_shortcut(0.7, 2, num_input, num_output);
+	ann = fann_create_shortcut(2, num_input, num_output);
 
 	fann_set_training_algorithm(ann, FANN_TRAIN_RPROP);
 	fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
@@ -289,10 +289,13 @@ void quality_benchmark_cascade(struct fann_train_data *train_data,
 	fann_set_rprop_delta_min(ann, 0.0);
 	fann_set_rprop_delta_max(ann, 50.0);
 
-	ann->cascade_change_fraction = 0.01;
-	ann->cascade_stagnation_epochs = 12;
-	ann->cascade_num_candidates = 16;
-	ann->cascade_weight_multiplier = 0.5;
+	fann_set_cascade_change_fraction(ann, 0.01);
+	fann_set_cascade_stagnation_epochs(ann, 12);
+	fann_set_cascade_weight_multiplier(ann, 0.4);
+ 	fann_set_cascade_candidate_limit(ann, 1000.0);
+	fann_set_cascade_max_out_epochs(ann, 150);
+	fann_set_cascade_max_cand_epochs(ann, 150);
+	fann_set_cascade_num_candidate_groups(ann, 1);
 
 	calibrate_timer();
 
@@ -303,7 +306,7 @@ void quality_benchmark_cascade(struct fann_train_data *train_data,
 		start_timer();
 		while(elapsed < (double) seconds_between_reports)
 		{
-			fann_cascadetrain_on_data_callback(ann, train_data, 0, NULL, 150, 150, 1, 0);
+			fann_cascadetrain_on_data(ann, train_data, 1, 1, 0);
 
 			elapsed = time_elapsed();
 			epochs++;
diff --git a/benchmarks/quality_fixed.c b/benchmarks/quality_fixed.c
index 6bf1dd4..ced43db 100644
--- a/benchmarks/quality_fixed.c
+++ b/benchmarks/quality_fixed.c
@@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
 #include <stdio.h>
+#include <string.h>
 #include "fixedfann.h"
 
 int main(int argc, char *argv[])
diff --git a/examples/cascade_train.c b/examples/cascade_train.c
index d297296..06a7be4 100644
--- a/examples/cascade_train.c
+++ b/examples/cascade_train.c
@@ -45,7 +45,7 @@ int FANN_API print_callback(struct fann *ann, struct fann_train_data *train,
 
 int main()
 {
-	const float desired_error = (const float) 0.00001;
+	const float desired_error = (const float) 0.001;
 	unsigned int max_neurons = 40;
 	unsigned int neurons_between_reports = 1;
 	struct fann_train_data *test = NULL;
@@ -76,12 +76,6 @@ int main()
 	train_data = fann_read_train_from_file("../benchmarks/datasets/gene.train");
 	test_data = fann_read_train_from_file("../benchmarks/datasets/gene.test");
 
-	train_data = fann_read_train_from_file("../benchmarks/datasets/building.train");
-	test_data = fann_read_train_from_file("../benchmarks/datasets/building.test");
-
-	train_data = fann_read_train_from_file("../benchmarks/datasets/robot.train");
-	test_data = fann_read_train_from_file("../benchmarks/datasets/robot.test");
-
 	train_data = fann_read_train_from_file("../benchmarks/datasets/thyroid.train");
 	test_data = fann_read_train_from_file("../benchmarks/datasets/thyroid.test");
 
@@ -94,14 +88,18 @@ int main()
 	train_data = fann_read_train_from_file("xor.data");
 	test_data = fann_read_train_from_file("xor.data");
 	
+	train_data = fann_read_train_from_file("../benchmarks/datasets/building.train");
+	test_data = fann_read_train_from_file("../benchmarks/datasets/building.test");
+
+	train_data = fann_read_train_from_file("../benchmarks/datasets/two-spiral.train");
+	test_data = fann_read_train_from_file("../benchmarks/datasets/two-spiral.test");
+
+	train_data = fann_read_train_from_file("../benchmarks/datasets/robot.train");
+	test_data = fann_read_train_from_file("../benchmarks/datasets/robot.test");
+
 	fann_scale_train_data(train_data, 0, 1);
 	fann_scale_train_data(test_data, 0, 1);
 
-	test = fann_subset_train_data(train_data, 0, 2);
-	test_data = fann_subset_train_data(train_data, 2, 2);
-	test = fann_merge_train_data(test, test_data);
-	fann_save_train(test, "test_test.data");
-
 	printf("Creating network.\n");
 
 	ann = fann_create_shortcut(2, train_data->num_input, train_data->num_output);
@@ -115,9 +113,8 @@ int main()
 	fann_set_activation_steepness_hidden(ann, 0.5);
 	fann_set_activation_steepness_output(ann, 0.5);
 
-
 	fann_set_train_error_function(ann, FANN_ERRORFUNC_LINEAR);
-	fann_set_train_stop_function(ann, FANN_STOPFUNC_BIT);
+/*	fann_set_train_stop_function(ann, FANN_STOPFUNC_BIT);*/	
 
 	fann_set_rprop_increase_factor(ann, 1.2);
 	fann_set_rprop_decrease_factor(ann, 0.5);
diff --git a/examples/robot.c b/examples/robot.c
index c58ce2f..35bacb3 100644
--- a/examples/robot.c
+++ b/examples/robot.c
@@ -41,8 +41,9 @@ int main()
 	printf("Training network.\n");
 
 	fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL);
+	fann_set_training_algorithm(ann, FANN_TRAIN_QUICKPROP);
 
-	fann_train_on_data(ann, train_data, 1000, 10, desired_error);
+	fann_train_on_data(ann, train_data, 3000, 10, desired_error);
 
 	printf("Testing network.\n");
 
diff --git a/src/fann_train.c b/src/fann_train.c
index 90253e4..005e62c 100644
--- a/src/fann_train.c
+++ b/src/fann_train.c
@@ -274,7 +274,7 @@ void fann_compute_MSE(struct fann *ann, fann_type * desired_output)
 */
 void fann_backpropagate_MSE(struct fann *ann)
 {
-	fann_type neuron_value, tmp_error;
+	fann_type tmp_error;
 	unsigned int i;
 	struct fann_layer *layer_it;
 	struct fann_neuron *neuron_it, *last_neuron;
@@ -340,12 +340,11 @@ void fann_backpropagate_MSE(struct fann *ann)
 
 		for(neuron_it = (layer_it - 1)->first_neuron; neuron_it != last_neuron; neuron_it++)
 		{
-			neuron_value = neuron_it->value;
-			/* *error_prev_layer *= fann_activation(ann, 0, neuron_value); */
-			*error_prev_layer *=
-				fann_activation(ann, neuron_it->activation_function,
-								neuron_it->activation_steepness, neuron_value);
+			*error_prev_layer *= fann_activation_derived(neuron_it->activation_function, 
+				neuron_it->activation_steepness, neuron_it->value, neuron_it->sum);
+			error_prev_layer++;
 		}
+		
 	}
 }
 
diff --git a/src/include/fann_cascade.h b/src/include/fann_cascade.h
index 517938b..4fd1ded 100644
--- a/src/include/fann_cascade.h
+++ b/src/include/fann_cascade.h
@@ -30,7 +30,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 FANN_EXTERNAL void fann_cascadetrain_on_data(struct fann *ann,
 													  struct fann_train_data *data,
-													  unsigned int max_out_epochs,
+													  unsigned int max_neurons,
 													  unsigned int neurons_between_reports,
 													  float desired_error);
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/libfann.git



More information about the debian-science-commits mailing list