16 class RandomNumberGenerator;
 
   57   Eigen::MatrixXd W, posGradW, negGradW, Wd;
 
   58   Eigen::VectorXd bv, posGradBv, negGradBv, bh, posGradBh, negGradBh, bhd;
 
   59   Eigen::MatrixXd pv, v, ph, h, phd;
 
   60   Eigen::MatrixXd deltas, e;
 
   62   Eigen::VectorXd params, grad;
 
   77   RBM(
int D, 
int H, 
int cdN = 1, 
double stdDev = 0.01, 
bool backprop = 
true,
 
   82   virtual Eigen::VectorXd 
operator()(
const Eigen::VectorXd& x);
 
   83   virtual Eigen::MatrixXd 
operator()(
const Eigen::MatrixXd& 
X);
 
   90   virtual double error();
 
   91   virtual double error(
unsigned int n);
 
   94   virtual Eigen::VectorXd 
gradient(
unsigned int n);
 
   95   virtual void errorGradient(std::vector<int>::const_iterator startN,
 
   96                              std::vector<int>::const_iterator endN,
 
   97                              double& value, Eigen::VectorXd& grad);
 
  101                                 bool dropout, 
double* error = 0);
 
  102   virtual void backpropagate(Eigen::MatrixXd* ein, Eigen::MatrixXd*& eout,
 
  103                              bool backpropToPrevious);
 
  107                                 std::vector<double*>& parameterDerivativePointers);
 
  161 #endif // OPENANN_RBM_H_