- added useProbsForHiddenReconstruction
git-svn-id: http://moon:8086/svn/software/trunk/projects/RBM@21 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+14
-8
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user