- use normalize per training sample

git-svn-id: http://moon:8086/svn/software/trunk/projects/RBM@555 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-10-18 06:16:27 +00:00
parent 2c2039ec2f
commit ea6a1ee6ed
+15 -2
View File
@@ -66,7 +66,7 @@ MatrixXd Rbm::sample(MatrixXd const &src)
noiseUniform(n);
return (src.array() > n.array()).cast<double>();
return (src.array() >= n.array()).cast<double>();
}
void Rbm::sample(MatrixXd &dst, MatrixXd const &src)
@@ -86,6 +86,7 @@ RowVectorXd Rbm::probsLogistic(RowVectorXd const &src)
MatrixXd Rbm::normalizeData(MatrixXd const &src)
{
#if 0
double mean = src.array().mean();
cout << "mean" << ": " << endl << mean << endl;
@@ -94,7 +95,19 @@ MatrixXd Rbm::normalizeData(MatrixXd const &src)
double stddev = sqrt(x2.array().mean());
cout << "stddev" << ": " << endl << stddev << endl;
return x;
return x/stddev;
#else
MatrixXd mean = src.colwise().mean();
MatrixXd x = src - mean.replicate(src.rows(), 1);
MatrixXd x2 = x.cwiseProduct(x);
MatrixXd stddev_inv = x2.colwise().mean();
stddev_inv = stddev_inv.array().sqrt().cwiseInverse();
return x*stddev_inv.replicate(src.rows(), 1);
#endif
}