From 3d2696e22261ed705ff58ccd5d3a962b5819d4c2 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 22 Jan 2014 12:14:09 -0800 Subject: [PATCH 1/3] make uniform distribution usage compatible with boost 1.46 --- src/caffe/util/math_functions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/util/math_functions.cpp b/src/caffe/util/math_functions.cpp index 2a0c7c4e453..8d7b0d07e88 100644 --- a/src/caffe/util/math_functions.cpp +++ b/src/caffe/util/math_functions.cpp @@ -398,7 +398,7 @@ void caffe_vRngUniform(const int n, Dtype* r, // FIXME check if boundaries are handled in the same way ? // Fixed by caffe_nextafter - boost::random::uniform_real_distribution random_distribution( + boost::uniform_real random_distribution( a, caffe_nextafter(b)); Caffe::random_generator_t &generator = Caffe::vsl_stream(); From f76b29649e914fb2637cd678b91782efafe99977 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 22 Jan 2014 12:28:01 -0800 Subject: [PATCH 2/3] use boost variate_generator to pass tests w/ boost 1.46 (Gaussian filler previously filled in all NaNs for me, making many tests fail) --- src/caffe/util/math_functions.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/caffe/util/math_functions.cpp b/src/caffe/util/math_functions.cpp index 8d7b0d07e88..a1c47caf3b7 100644 --- a/src/caffe/util/math_functions.cpp +++ b/src/caffe/util/math_functions.cpp @@ -431,9 +431,12 @@ void caffe_vRngGaussian(const int n, Dtype* r, const Dtype a, // the tests are irrelevant to the random numbers. boost::normal_distribution random_distribution(a, sigma); Caffe::random_generator_t &generator = Caffe::vsl_stream(); + boost::variate_generator > variate_generator( + generator, random_distribution); - for(int i = 0; i < n; i += 1) { - r[i] = random_distribution(generator); + for(int i = 0; i < n; ++i) { + r[i] = variate_generator(); } } From fae6944f82789c39e446e10405de3d5f695b187f Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 22 Jan 2014 12:42:12 -0800 Subject: [PATCH 3/3] change all Rng's to use variate_generator for consistency --- src/caffe/util/math_functions.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/caffe/util/math_functions.cpp b/src/caffe/util/math_functions.cpp index a1c47caf3b7..07b1aa01fd7 100644 --- a/src/caffe/util/math_functions.cpp +++ b/src/caffe/util/math_functions.cpp @@ -401,9 +401,12 @@ void caffe_vRngUniform(const int n, Dtype* r, boost::uniform_real random_distribution( a, caffe_nextafter(b)); Caffe::random_generator_t &generator = Caffe::vsl_stream(); + boost::variate_generator > variate_generator( + generator, random_distribution); - for(int i = 0; i < n; i += 1) { - r[i] = random_distribution(generator); + for (int i = 0; i < n; ++i) { + r[i] = variate_generator(); } } @@ -435,7 +438,7 @@ void caffe_vRngGaussian(const int n, Dtype* r, const Dtype a, boost::normal_distribution > variate_generator( generator, random_distribution); - for(int i = 0; i < n; ++i) { + for (int i = 0; i < n; ++i) { r[i] = variate_generator(); } } @@ -457,9 +460,12 @@ void caffe_vRngBernoulli(const int n, Dtype* r, const double p) { // FIXME check if parameters are handled in the same way ? boost::bernoulli_distribution random_distribution(p); Caffe::random_generator_t &generator = Caffe::vsl_stream(); + boost::variate_generator > variate_generator( + generator, random_distribution); - for(int i = 0; i < n; i += 1) { - r[i] = random_distribution(generator); + for (int i = 0; i < n; ++i) { + r[i] = variate_generator(); } }