- added useProbsForHiddenReconstruction

git-svn-id: http://moon:8086/svn/software/trunk/projects/RBM@21 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2014-10-08 18:45:15 +00:00
parent da30d95e31
commit fc1f53fdb6
3 changed files with 49 additions and 24 deletions
+14 -8
View File
@@ -78,9 +78,9 @@ public:
}
}
void train(LayerArray<VisibleLayer> &vt, uint32_t numEpochs, double mu, uint32_t numGibbs = 1, bool useExpectations = false, bool doRaoBlackwell = false, bool doRobbinsMonro = false)
void train(LayerArray<VisibleLayer> &vt, uint32_t numEpochs, double mu, uint32_t numGibbs = 1, bool useExpectations = false, bool doRaoBlackwell = false, bool useProbsForHiddenReconstruction = false, bool doRobbinsMonro = false)
{
uint32_t t;
uint32_t t, i;
uint32_t epoch;
uint32_t gibbs;
VisibleLayer v(m_w.getNumVisible());
@@ -100,17 +100,18 @@ public:
if (doRobbinsMonro)
{
for (t=0; t < vt.getSize(); t++)
for (i=0; i < vt.getSize(); i++)
{
// Create hidden layer base on training data
ht[t].probsUpdate(vt[t], w);
ht[i].probsUpdate(vt[i], w);
}
}
for (epoch=0; epoch < numEpochs; epoch++)
{
for (t=0; t < vt.getSize(); t++)
for (i=0; i < vt.getSize(); i++)
{
t = (uint32_t)(0.5 + (vt.getSize()-1)*Noise_Uniform(&m_noise, 0.5));
h.probsUpdate(vt[t], w);
// Create hidden layer base on training data
@@ -140,7 +141,14 @@ public:
// Create visible reconstruction (a fantasy...)
v.probsUpdate(*pH, w);
v.statesUpdateStochastic();
if (useProbsForHiddenReconstruction)
{
v.statesAssignfromProbs();
}
else
{
v.statesUpdateStochastic();
}
// Create hidden reconstruction
pH->probsUpdate(v, w);
@@ -284,7 +292,6 @@ public:
m_th.probsUpdate(tv, m_w);
m_th.statesAssignfromProbs();
// m_th.statesUpdateStochastic();
#if 0
printf("pi(t) = (pi^, v>)\n");
@@ -307,7 +314,6 @@ public:
m_tv.probsUpdate(th, m_w);
m_tv.statesAssignfromProbs();
// m_tv.statesUpdateStochastic();
#if 0
printf("pi(t) = (pi^, v>)\n");