- use custom noise for bugfixing
- init weights with zero mean uniform noise git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@598 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+18
-9
@@ -13,14 +13,13 @@
|
||||
|
||||
#include "Rbm.hpp"
|
||||
|
||||
Rbm::Rbm(size_t numVisible, size_t numHidden, double weightInit)
|
||||
Rbm::Rbm(size_t numVisible, size_t numHidden)
|
||||
: m_params()
|
||||
, m_weightInit(weightInit)
|
||||
, m_w(numVisible, numHidden)
|
||||
, m_bv(1, numVisible)
|
||||
, m_bh(1, numHidden)
|
||||
{
|
||||
weightsInit(0.0, m_weightInit);
|
||||
Noise_Init(&m_noise, 0x32727155);
|
||||
}
|
||||
|
||||
Rbm::Rbm(const Rbm& orig)
|
||||
@@ -33,13 +32,14 @@ Rbm::Rbm(const Rbm& orig)
|
||||
|
||||
Rbm::~Rbm()
|
||||
{
|
||||
Noise_Free(&m_noise);
|
||||
}
|
||||
|
||||
void Rbm::weightsInit(double mu, double stddev)
|
||||
void Rbm::weightsInit(double stddev, double mu)
|
||||
{
|
||||
uniform(m_w, mu, stddev);
|
||||
uniform(m_bh, mu, stddev);
|
||||
uniform(m_bv, mu, stddev);
|
||||
uniform(m_w, stddev, mu);
|
||||
uniform(m_bv, stddev, mu);
|
||||
uniform(m_bh, stddev, mu);
|
||||
|
||||
}
|
||||
|
||||
@@ -53,7 +53,6 @@ Json::Value Rbm::toJson() const
|
||||
Json::Value rbm;
|
||||
rbm["numVisible"] = m_bv.n_elem;
|
||||
rbm["numHidden"] = m_bh.n_elem;
|
||||
rbm["weightInit"] = m_weightInit;
|
||||
rbm["params"] = m_params.toJson();
|
||||
return rbm;
|
||||
}
|
||||
@@ -239,9 +238,19 @@ arma::mat Rbm::toVisibleProbs(const arma::mat &hidden) const
|
||||
return probsLogistic(toVisibleState(hidden));
|
||||
}
|
||||
|
||||
void Rbm::uniform(arma::mat& srcDst, double mu, double stdDev)
|
||||
void Rbm::uniform(arma::mat& srcDst, double stdDev, double mu)
|
||||
{
|
||||
#if 1
|
||||
for (size_t i=0; i < srcDst.n_rows; i++)
|
||||
{
|
||||
for (size_t j=0; j < srcDst.n_cols; j++)
|
||||
{
|
||||
srcDst(i, j) = stdDev*(Noise_Uniform(&m_noise) + mu - 0.5);
|
||||
}
|
||||
}
|
||||
#else
|
||||
srcDst = stdDev*arma::randu(srcDst.n_rows, srcDst.n_cols) + mu;
|
||||
#endif
|
||||
}
|
||||
|
||||
const arma::mat& Rbm::w() const
|
||||
|
||||
Reference in New Issue
Block a user