- train layer instead of stack

- fixed downPass upPass

git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@645 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-11-08 18:23:56 +00:00
parent 8d9b16c634
commit 9b1084bda9
4 changed files with 71 additions and 83 deletions
+33 -1
View File
@@ -36,7 +36,11 @@ public:
arma::mat up_pass(const arma::mat& hidden);
arma::mat down_pass(const arma::mat& visible);
void train(arma::mat const &batch, IListener *pListener=nullptr)
{
Rbm::train(trainingData(batch), pListener);
}
std::string& name()
{
return m_name;
@@ -61,7 +65,35 @@ public:
{
return m_bh.n_elem;
}
arma::mat trainingData(arma::mat const &batch)
{
arma::mat thisBatch = batch;
Layer *pLayer = root();
while (pLayer)
{
if (pLayer == this)
{
break;
}
thisBatch = pLayer->toHiddenProbs(thisBatch);
pLayer = pLayer->next;
}
return thisBatch;
}
Layer *root()
{
Layer *pLayer = this;
while(pLayer->prev)
{
pLayer = pLayer->prev;
}
return pLayer;
}
private:
std::string m_name;
std::string m_weightsFile;
size_t m_id;