- moved method of layer interaction from Layer to Stack
git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@817 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+24
-39
@@ -20,6 +20,7 @@ Layer::Layer(const string &name, size_t id, size_t numVisibleX, size_t numVisibl
|
||||
, prev(nullptr)
|
||||
, m_name(name)
|
||||
, m_id(id)
|
||||
, m_isEnabled(true)
|
||||
, m_numVisibleX(numVisibleX)
|
||||
, m_numVisibleY(numVisibleY)
|
||||
, m_numContext(numContext)
|
||||
@@ -34,6 +35,7 @@ Layer::Layer(const Layer& orig)
|
||||
, prev(nullptr)
|
||||
, m_name(orig.m_name)
|
||||
, m_id(orig.m_id)
|
||||
, m_isEnabled(orig.m_isEnabled)
|
||||
, m_numVisibleX(orig.m_numVisibleX)
|
||||
, m_numVisibleY(orig.m_numVisibleY)
|
||||
{
|
||||
@@ -48,6 +50,16 @@ size_t Layer::id()
|
||||
return m_id;
|
||||
}
|
||||
|
||||
bool Layer::isEnable()
|
||||
{
|
||||
return m_isEnabled;
|
||||
}
|
||||
|
||||
void Layer::setEnable(bool enable)
|
||||
{
|
||||
m_isEnabled = enable;
|
||||
}
|
||||
|
||||
std::string& Layer::name()
|
||||
{
|
||||
return m_name;
|
||||
@@ -78,53 +90,26 @@ Layer* Layer::root()
|
||||
return pLayer;
|
||||
}
|
||||
|
||||
arma::mat Layer::gibbsPass(arma::mat& vr)
|
||||
arma::mat Layer::to_h_gibbs(const arma::mat& v_probs)
|
||||
{
|
||||
arma::mat h;
|
||||
for (int i = 0; i < params().numGibbs; i++)
|
||||
{
|
||||
h = prob(v_to_h(vr));
|
||||
vr = prob(h_to_v(h));
|
||||
}
|
||||
onUpPass(v_probs);
|
||||
|
||||
arma::mat v = v_probs;
|
||||
arma::mat h = toHiddenProbs(v);
|
||||
gibbs_vh(v, h);
|
||||
return h;
|
||||
}
|
||||
|
||||
arma::mat Layer::downPass(const arma::mat& h)
|
||||
arma::mat Layer::to_v_gibbs(const arma::mat& h_probs)
|
||||
{
|
||||
arma::mat v = prob(h_to_v(h));
|
||||
if (prev)
|
||||
{
|
||||
return prev->downPass(v);
|
||||
}
|
||||
onDownPass(h_probs);
|
||||
|
||||
arma::mat h = h_probs;
|
||||
arma::mat v = toVisibleProbs(h);
|
||||
gibbs_hv(h, v);
|
||||
return v;
|
||||
}
|
||||
|
||||
arma::mat Layer::upPass(const arma::mat& v)
|
||||
{
|
||||
arma::mat r = v;
|
||||
arma::mat h = gibbsPass(r);
|
||||
if (next)
|
||||
{
|
||||
return next->upPass(h);
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
arma::mat Layer::upDownPass(const arma::mat& v)
|
||||
{
|
||||
arma::mat r = v;
|
||||
arma::mat h = gibbsPass(r);
|
||||
if (next)
|
||||
{
|
||||
next->upDownPass(h);
|
||||
}
|
||||
else if (prev)
|
||||
{
|
||||
prev->downPass(r);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
arma::mat Layer::vc_to_c(const arma::mat& vc) const
|
||||
{
|
||||
if (m_numContext == 0)
|
||||
|
||||
Reference in New Issue
Block a user