- weights and biases are allocated outside Rbm
git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@565 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+7
-4
@@ -14,10 +14,10 @@
|
||||
#include "Rbm.hpp"
|
||||
#include "noise.h"
|
||||
|
||||
Rbm::Rbm(size_t numVisible, size_t numHidden)
|
||||
: m_w(numVisible, numHidden)
|
||||
, m_bh(1, numHidden)
|
||||
, m_bv(1, numVisible)
|
||||
Rbm::Rbm(arma::mat &w, arma::mat &bv, arma::mat &bh)
|
||||
: m_w(w)
|
||||
, m_bv(bv)
|
||||
, m_bh(bh)
|
||||
{
|
||||
Noise_Init(&m_noise, 0x32727155);
|
||||
uniform(m_w);
|
||||
@@ -26,6 +26,9 @@ Rbm::Rbm(size_t numVisible, size_t numHidden)
|
||||
}
|
||||
|
||||
Rbm::Rbm(const Rbm& orig)
|
||||
: m_w(orig.m_w)
|
||||
, m_bv(orig.m_bv)
|
||||
, m_bh(orig.m_bh)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
+10
-7
@@ -65,22 +65,25 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
Rbm(size_t numVisible, size_t numHidden);
|
||||
Rbm(arma::mat &w, arma::mat &bv, arma::mat &bh);
|
||||
Rbm(const Rbm& orig);
|
||||
virtual ~Rbm();
|
||||
|
||||
void train(arma::mat const &batch, size_t numEpochs, size_t sizeMiniBatch, Params const ¶ms, IListener *pListener);
|
||||
arma::mat sample(arma::mat const &src);
|
||||
static arma::mat probsLogistic(arma::mat const &src);
|
||||
arma::mat toHidden(const arma::mat &v);
|
||||
arma::mat toVisible(const arma::mat &h);
|
||||
void uniform(arma::mat &srcDst, double mu=0.0, double stdDev=1.0);
|
||||
arma::mat& weights();
|
||||
arma::mat& bias_visible();
|
||||
arma::mat& bias_hidden();
|
||||
|
||||
private:
|
||||
noise_gen_t m_noise;
|
||||
arma::mat m_w;
|
||||
arma::mat m_bh;
|
||||
arma::mat m_bv;
|
||||
arma::mat &m_w;
|
||||
arma::mat &m_bh;
|
||||
arma::mat &m_bv;
|
||||
arma::mat sample(arma::mat const &src);
|
||||
static arma::mat probsLogistic(arma::mat const &src);
|
||||
void uniform(arma::mat &srcDst, double mu=0.0, double stdDev=1.0);
|
||||
};
|
||||
|
||||
#endif /* RBM_HPP */
|
||||
|
||||
+5
-2
@@ -54,11 +54,14 @@ int main()
|
||||
|
||||
RbmListener statusDisplay;
|
||||
Rbm::Params params;
|
||||
Rbm rbm(28*28, 64);
|
||||
arma::mat w = arma::zeros(28*28, 64);
|
||||
arma::mat bv = arma::zeros(1, 28*28);
|
||||
arma::mat bh = arma::zeros(1, 64);
|
||||
Rbm rbm(w, bv, bh);
|
||||
arma::mat batch = arma::randu(100, 28*28);
|
||||
rbm.train(batch, 10, 10, params, &statusDisplay);
|
||||
|
||||
arma::mat v = arma::randu(10, 28*28);
|
||||
arma::mat v = arma::randu(100, 28*28);
|
||||
arma::mat h = rbm.toHidden(v);
|
||||
arma::mat r = rbm.toVisible(h);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user