Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) Neural network

 

A neural network is a connected collection of neurons (that is, a class that simulates a biological neuron) that can be trained for certain purposes.

 

 

 

 

 

Freely downloadable C++ neural networks

 

From my favorite (top) to my least favorite. This list is incomplete and will remain incomplete.

 

 

Untested:

 

 

 

 

 

 

Proposed neural network architecture

 

template <class Neuron>
struct NeuralNetwork
{
  NeuralNetwork(
    const int nInputs  = 0,
    const int nHidden  = 0,
    const int nOutputs = 0);

  //If the propagation of a neuron does not change its state,
  //NeuralNet::Propagate is a const method
  //Note: this constness must be determined by templates
  const std::vector<double> Propagate(const std::vector<double>& inputs);
  const std::vector<double> Propagate(const std::vector<double>& inputs) const;


  //When a desired input is known, let this backpropagate
  void BackPropagate(const std::vector<double>& desiredOutputs)

  private:
  //The NeuralNetwork is implemented as a boost::graph of Neurons
  boost::graph<Neuron> m_n;
};


//Neuron is an abstract base class
struct Neuron
{
  //Note: this constness must be determined by templates
  double Propagate(const double input) = 0;
  double Propagate(const double input) const = 0;
};

 

 

 

 

 

External links

 

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict