13 #ifndef MLPACK_METHODS_ANN_LAYER_REPARAMETRIZATION_HPP
14 #define MLPACK_METHODS_ANN_LAYER_REPARAMETRIZATION_HPP
19 #include "../activation_functions/softplus_function.hpp"
53 typename InputDataType = arma::mat,
54 typename OutputDataType = arma::mat
56 class Reparametrization
71 const bool stochastic =
true,
72 const bool includeKl =
true,
73 const double beta = 1);
83 void Forward(
const arma::Mat<eT>& input, arma::Mat<eT>& output);
95 void Backward(
const arma::Mat<eT>& input,
96 const arma::Mat<eT>& gy,
105 OutputDataType
const&
Delta()
const {
return delta; }
107 OutputDataType&
Delta() {
return delta; }
120 return -0.5 * beta * arma::accu(2 * arma::log(stdDev) - arma::pow(stdDev, 2)
121 - arma::pow(mean, 2) + 1) / mean.n_cols;
127 template<
typename Archive>
128 void serialize(Archive& ar,
const unsigned int );
144 OutputDataType delta;
147 OutputDataType gaussianSample;
154 OutputDataType preStdDev;
157 OutputDataType stdDev;
160 OutputDataType outputParameter;
167 #include "reparametrization_impl.hpp"
OutputDataType & Delta()
Modify the delta.
OutputDataType const & Delta() const
Get the delta.
The core includes that mlpack expects; standard C++ includes and Armadillo.
void Forward(const arma::Mat< eT > &input, arma::Mat< eT > &output)
Ordinary feed forward pass of a neural network, evaluating the function f(x) by propagating the activ...
double Loss()
Get the KL divergence with standard normal.
void serialize(Archive &ar, const unsigned int)
Serialize the layer.
OutputDataType & OutputParameter()
Modify the output parameter.
void Backward(const arma::Mat< eT > &input, const arma::Mat< eT > &gy, arma::Mat< eT > &g)
Ordinary feed backward pass of a neural network, calculating the function f(x) by propagating x backw...
OutputDataType const & OutputParameter() const
Get the output parameter.
size_t & OutputSize()
Modify the output size.
Reparametrization()
Create the Reparametrization object.
size_t const & OutputSize() const
Get the output size.