- prepare cd_jens() for linear hidden units

This commit is contained in:
2024-01-31 20:52:18 +01:00
parent 802f11211f
commit 8e44aff7a5
+7 -4
View File
@@ -17,6 +17,8 @@
using namespace Matutils; using namespace Matutils;
#define USE_CD_HINTON 0
Rbm::Rbm(size_t numVisible, size_t numHidden) Rbm::Rbm(size_t numVisible, size_t numHidden)
: m_params() : m_params()
, m_whv(numVisible, numHidden) , m_whv(numVisible, numHidden)
@@ -140,14 +142,15 @@ void Rbm::gibbs_hv(arma::mat &h_probs, arma::mat &v_probs) const
void Rbm::cd(arma::mat const &v_data, arma::mat &dw, arma::mat &dbh, arma::mat &dbv) void Rbm::cd(arma::mat const &v_data, arma::mat &dw, arma::mat &dbh, arma::mat &dbv)
{ {
if (m_params.doGaussianHidden) #if USE_CD_HINTON
{ {
cd_hinton_hid_linear(v_data, dw, dbh, dbv); cd_hinton(v_data, dw, dbh, dbv);
} }
else #else
{ {
cd_jens(v_data, dw, dbh, dbv); cd_jens(v_data, dw, dbh, dbv);
} }
#endif
} }
void Rbm::cd_hinton_hid_linear(arma::mat const &v_data, arma::mat &dw, arma::mat &dbh, arma::mat &dbv) void Rbm::cd_hinton_hid_linear(arma::mat const &v_data, arma::mat &dw, arma::mat &dbh, arma::mat &dbv)
@@ -241,7 +244,7 @@ void Rbm::cd_hinton(arma::mat const &v_data, arma::mat &dw, arma::mat &dbh, arma
void Rbm::cd_jens(arma::mat const &v_states, arma::mat &dw, arma::mat &dbh, arma::mat &dbv) void Rbm::cd_jens(arma::mat const &v_states, arma::mat &dw, arma::mat &dbh, arma::mat &dbv)
{ {
arma::mat v_probs(v_states); arma::mat v_probs(v_states);
arma::mat h_states = v_to_h(v_states); arma::mat h_states = toHiddenProbs(v_states);
arma::mat h_probs; arma::mat h_probs;
// Sample hidden // Sample hidden