diff --git a/source/Layer.cpp b/source/Layer.cpp index 695850c..5271824 100644 --- a/source/Layer.cpp +++ b/source/Layer.cpp @@ -102,12 +102,22 @@ Json::Value Layer::toJson() const } -void Layer::up_pass(const arma::mat& v) +arma::mat Layer::up_pass(const arma::mat &hidden) { - + arma::mat reconstruction = rbm().toVisibleProbs(hidden); + if (upper) + { + return upper->up_pass(reconstruction); + } + return rbm().toHiddenProbs(reconstruction); } -void Layer::down_pass(arma::mat& dst, const arma::mat& src) +arma::mat Layer::down_pass(const arma::mat &visible) { - + arma::mat hidden = rbm().toHiddenProbs(visible); + if (lower) + { + return lower->down_pass(hidden); + } + return rbm().toVisibleProbs(hidden); } diff --git a/source/Layer.hpp b/source/Layer.hpp index b6607e5..287bbdd 100644 --- a/source/Layer.hpp +++ b/source/Layer.hpp @@ -35,8 +35,8 @@ public: Rbm& rbm(); void saveWeights(); - void up_pass(const arma::mat& v); - void down_pass(arma::mat& dst, const arma::mat& src); + arma::mat up_pass(const arma::mat& hidden); + arma::mat down_pass(const arma::mat& visible); size_t id() {