neuralNetwork.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*******************************************************************
  2. * addapted by Trevor Standley for use as a function approximator
  3. * Addapted from:
  4. * Basic Feed Forward Neural Network Class
  5. * ------------------------------------------------------------------
  6. * Bobby Anguelov - takinginitiative.wordpress.com (2008)
  7. * MSN & email: [email protected]
  8. ********************************************************************/
  9. #pragma once
  10. //standard includes
  11. #include <limits>
  12. class neuralNetwork
  13. {
  14. private:
  15. //number of neurons
  16. int nInput, nHidden1, nHidden2, nOutput;
  17. //neurons
  18. double* inputNeurons;
  19. double* hiddenNeurons1;
  20. double* hiddenNeurons2;
  21. double* outputNeurons;
  22. //weights
  23. double** wInputHidden;
  24. double** wHidden2Hidden;
  25. double** wHiddenOutput;
  26. public:
  27. //constructor & destructor
  28. neuralNetwork(int numInput, int numHidden1, int numHidden2, int numOutput);
  29. neuralNetwork(const neuralNetwork&);
  30. neuralNetwork();
  31. void operator = (const neuralNetwork&);
  32. ~neuralNetwork();
  33. //weight operations
  34. double* feedForwardPattern( double* pattern );
  35. void backpropigate(double* pattern, double OLR, double H2LR, double H1LR );
  36. void tweakWeights(double howMuch);
  37. void mate(const neuralNetwork&n1,const neuralNetwork&n2);
  38. private:
  39. void initializeWeights();
  40. inline double activationFunction( double x );
  41. void feedForward( double* pattern );
  42. };
  43. std::istream & operator >> (std::istream &, neuralNetwork & ann);
  44. std::ostream & operator << (std::ostream &, const neuralNetwork & ann);