- changed noise API
- noise initialized with help of clock() git-svn-id: http://moon:8086/svn/software/trunk/projects/RBM@33 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+2
-2
@@ -94,7 +94,7 @@ public:
|
||||
|
||||
for (i=0; i < m_numUnits; i++)
|
||||
{
|
||||
sample = Noise_Uniform(&m_noise, 0.5);
|
||||
sample = Noise_Uniform(&m_noise);
|
||||
m_states(i) = (double)(sample <= m_probs(i));
|
||||
}
|
||||
}
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
|
||||
for (i=0; i < m_numUnits; i++)
|
||||
{
|
||||
m_states(i) = Noise_Gaussian(&m_noise, 0, sigma) + lambda*accum(layer, weights, i);
|
||||
m_states(i) = sigma*Noise_Gaussian(&m_noise) + lambda*accum(layer, weights, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -71,19 +71,19 @@ public:
|
||||
|
||||
for (i=0; i < m_numVisible; i++)
|
||||
{
|
||||
m_bv(i) = kdev*Noise_Uniform(&m_noise, 0.5);
|
||||
m_bv(i) = kdev*Noise_Uniform(&m_noise);
|
||||
}
|
||||
|
||||
for (j=0; j < m_numHidden; j++)
|
||||
{
|
||||
m_bh(j) = kdev*Noise_Uniform(&m_noise, 0.5);
|
||||
m_bh(j) = kdev*Noise_Uniform(&m_noise);
|
||||
}
|
||||
|
||||
for (i=0; i < m_numVisible; i++)
|
||||
{
|
||||
for (j=0; j < m_numHidden; j++)
|
||||
{
|
||||
m_w(i,j) = kdev*Noise_Uniform(&m_noise, 0.5);
|
||||
m_w(i,j) = kdev*Noise_Uniform(&m_noise);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-7
@@ -45,26 +45,28 @@ double ran0(long *idum)
|
||||
// --------------------------------------------------------------
|
||||
void Noise_Init(noise_gen_t *pObj, long seed)
|
||||
{
|
||||
pObj->state = seed;
|
||||
|
||||
pObj->state = seed ^ clock();
|
||||
}
|
||||
|
||||
void Noise_Free(noise_gen_t *pObj)
|
||||
{
|
||||
}
|
||||
|
||||
double Noise_Uniform(noise_gen_t *pObj, double mu)
|
||||
// 0 .. 1
|
||||
double Noise_Uniform(noise_gen_t *pObj)
|
||||
{
|
||||
return ran0(&pObj->state) + mu -0.5;
|
||||
return ran0(&pObj->state);
|
||||
}
|
||||
|
||||
double Noise_Gaussian(noise_gen_t *pObj, double mu, double sigma)
|
||||
double Noise_Gaussian(noise_gen_t *pObj)
|
||||
{
|
||||
double U1, U2, V1, V2, S, Y;
|
||||
|
||||
do
|
||||
{
|
||||
U1 = Noise_Uniform(pObj, 0.5); // U1=[0,1]
|
||||
U2 = Noise_Uniform(pObj, 0.5); // U2=[0,1]
|
||||
U1 = Noise_Uniform(pObj); // U1=[0,1]
|
||||
U2 = Noise_Uniform(pObj); // U2=[0,1]
|
||||
V1 = 2 * U1 - 1; // V1=[-1,1]
|
||||
V2 = 2 * U2 - 1; // V2=[-1,1]
|
||||
S = V1 * V1 + V2 * V2;
|
||||
@@ -73,7 +75,6 @@ double Noise_Gaussian(noise_gen_t *pObj, double mu, double sigma)
|
||||
|
||||
// X = sqrt(-2 * log(S) / S) * V1;
|
||||
Y = sqrt(-2 * log(S) / S) * V2;
|
||||
Y = mu + sigma*Y;
|
||||
|
||||
return Y;
|
||||
}
|
||||
|
||||
+2
-2
@@ -30,8 +30,8 @@ extern "C" {
|
||||
// --------------------------------------------------------------
|
||||
void Noise_Init(noise_gen_t *pObj, long seed);
|
||||
void Noise_Free(noise_gen_t *pObj);
|
||||
double Noise_Uniform(noise_gen_t *pObj, double mu);
|
||||
double Noise_Gaussian(noise_gen_t *pObj, double mu, double sigma);
|
||||
double Noise_Uniform(noise_gen_t *pObj);
|
||||
double Noise_Gaussian(noise_gen_t *pObj);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user