- use all-at-onec (v+c) method
git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@759 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+23
-14
@@ -119,10 +119,14 @@ public:
|
||||
virtual ~Rbm();
|
||||
|
||||
void weightsInit(double stddev, double mu=0.0);
|
||||
void weightsAssign(const arma::mat &w)
|
||||
{
|
||||
m_whv.submat(0, 0, w.n_rows-1, w.n_cols-1) = w;
|
||||
}
|
||||
void train(arma::mat const &batch, IListener *pListener=nullptr);
|
||||
|
||||
static arma::mat normalize(const arma::mat &hidden);
|
||||
const arma::mat& w() const;
|
||||
const arma::mat& whv() const;
|
||||
const arma::mat& bv() const;
|
||||
const arma::mat& bh() const;
|
||||
|
||||
@@ -134,30 +138,35 @@ public:
|
||||
return m_params;
|
||||
}
|
||||
static arma::mat prob(arma::mat const &src);
|
||||
arma::mat v_to_h(const arma::mat &visible) const;
|
||||
arma::mat h_to_v(const arma::mat &hidden) const;
|
||||
arma::mat c_to_h(const arma::mat &context) const;
|
||||
arma::mat h_to_c(const arma::mat &hidden) const;
|
||||
|
||||
|
||||
arma::mat toHiddenProbs(const arma::mat &visible) const
|
||||
{
|
||||
return Rbm::prob(v_to_h(arma::join_rows(visible, m_ctx)));
|
||||
}
|
||||
|
||||
arma::mat toVisibleProbs(const arma::mat &hidden) const
|
||||
{
|
||||
return arma::reshape(Rbm::prob(h_to_v(hidden)), 1, m_bv.n_cols-m_bhv.n_cols);
|
||||
}
|
||||
|
||||
private:
|
||||
Params m_params;
|
||||
arma::mat v_to_h(const arma::mat &visible) const;
|
||||
arma::mat h_to_v(const arma::mat &hidden) const;
|
||||
arma::mat sample(arma::mat const &src);
|
||||
void weightUpdate_hv(arma::mat const &v_states, arma::mat &dwhv, arma::mat &dbhv, arma::mat &dbv);
|
||||
void weightUpdate_hc(arma::mat const &c_states, arma::mat &dwhc, arma::mat &dbhc, arma::mat &dbc);
|
||||
void weightUpdate(arma::mat const &v_states, arma::mat &dwhv, arma::mat &dbhv, arma::mat &dbv);
|
||||
void uniform(arma::mat &srcDst, double stdDev=1.0, double mu=0.5);
|
||||
void gibbs_hv(arma::mat &hv_states, arma::mat &v_states);
|
||||
void gibbs_hc(arma::mat &hc_states, arma::mat &c_states);
|
||||
void gibbs(arma::mat &hv_states, arma::mat &v_states);
|
||||
|
||||
protected:
|
||||
arma::mat m_whv;
|
||||
arma::mat m_whc;
|
||||
arma::mat m_bhv;
|
||||
arma::mat m_bhc;
|
||||
arma::mat m_bv;
|
||||
arma::mat m_bc;
|
||||
arma::mat m_ctx;
|
||||
|
||||
private:
|
||||
noise_gen_t m_noise;
|
||||
arma::mat m_whv;
|
||||
|
||||
};
|
||||
|
||||
#endif /* RBM_HPP */
|
||||
|
||||
Reference in New Issue
Block a user