gaussian_init.hpp
Go to the documentation of this file.
1 
14 #ifndef MLPACK_METHODS_ANN_INIT_RULES_GAUSSIAN_INIT_HPP
15 #define MLPACK_METHODS_ANN_INIT_RULES_GAUSSIAN_INIT_HPP
16 
17 #include <mlpack/prereqs.hpp>
19 
20 using namespace mlpack::math;
21 
22 namespace mlpack {
23 namespace ann {
24 
29 {
30  public:
37  GaussianInitialization(const double mean = 0, const double variance = 1) :
38  mean(mean), variance(variance)
39  {
40  // Nothing to do here.
41  }
42 
50  void Initialize(arma::mat& W,
51  const size_t rows,
52  const size_t cols)
53  {
54  if (W.is_empty())
55  {
56  W = arma::mat(rows, cols);
57  }
58  W.imbue( [&]() { return arma::as_scalar(RandNormal(mean, variance)); } );
59  }
60 
69  void Initialize(arma::cube & W,
70  const size_t rows,
71  const size_t cols,
72  const size_t slices)
73  {
74  W = arma::cube(rows, cols, slices);
75 
76  for (size_t i = 0; i < slices; i++)
77  Initialize(W.slice(i), rows, cols);
78  }
79 
80  private:
82  double mean;
83 
85  double variance;
86 }; // class GaussianInitialization
87 
88 } // namespace ann
89 } // namespace mlpack
90 
91 #endif
.hpp
Definition: add_to_po.hpp:21
The core includes that mlpack expects; standard C++ includes and Armadillo.
void Initialize(arma::cube &W, const size_t rows, const size_t cols, const size_t slices)
Initialize randomly the elements of the specified weight 3rd order tensor.
GaussianInitialization(const double mean=0, const double variance=1)
Initialize the gaussian with the given mean and variance.
void Initialize(arma::mat &W, const size_t rows, const size_t cols)
Initialize the elements weight matrix using a Gaussian Distribution.
double RandNormal()
Generates a normally distributed random number with mean 0 and variance 1.
Definition: random.hpp:104
Miscellaneous math routines.
Definition: clamp.hpp:19
Miscellaneous math random-related routines.
This class is used to initialize weigth matrix with a gaussian.