1 #ifndef neuralNetwork_h 2 #define neuralNetwork_h 10 #define LEARNING_RATE 0.3 12 #define NUM_EPOCHS 500 23 const std::vector<int> &which_inputs,
24 const int &num_hidden_layers,
25 const int &num_hidden_nodes,
26 const std::vector<double> &weights,
27 const std::vector<double> &wHiddenOutput,
28 const std::vector<double> &inRanges,
29 const std::vector<double> &inBases,
30 const double &outRange,
31 const double &outBase);
43 const std::vector<int> &which_inputs,
44 const int &num_hidden_layer,
45 const int &num_hidden_nodes);
54 double process(
const std::vector<double> &inputVector);
77 std::vector<int> whichInputs;
82 std::vector<double> inputNeurons;
83 std::vector<std::vector<double>> hiddenNeurons;
87 std::vector<std::vector<std::vector<double>>> weights;
88 std::vector<double> wHiddenOutput;
91 std::vector<double> inRanges;
92 std::vector<double> inBases;
97 inline double activationFunction(
double);
106 void train(
const std::vector<trainingExample> &trainingSet);
115 std::vector<std::vector< std::vector<double>>> deltaWeights;
116 std::vector<double> deltaHiddenOutput;
119 std::vector<double> hiddenErrorGradients;
120 double outputErrorGradient;
121 inline double getHiddenErrorGradient(
int layer,
int neuron);
126 void backpropagate(
const double &desiredOutput);
129 void updateWeights();
~neuralNetwork()
Definition: neuralNetwork.cpp:160
void train(const std::vector< trainingExample > &trainingSet)
Definition: neuralNetwork.cpp:315
std::vector< double > getWHiddenOutput()
Definition: neuralNetwork.cpp:208
std::vector< double > getInBases()
Definition: neuralNetwork.cpp:216
std::vector< double > getInRanges()
Definition: neuralNetwork.cpp:212
int getNumHiddenNodes()
Definition: neuralNetwork.cpp:192
std::vector< int > getWhichInputs()
Definition: neuralNetwork.cpp:184
int getNumHiddenLayers()
Definition: neuralNetwork.cpp:188
void getJSONDescription(Json::Value ¤tModel)
Definition: neuralNetwork.cpp:230
int getNumInputs()
Definition: neuralNetwork.cpp:180
Definition: baseModel.h:12
neuralNetwork(const int &num_inputs, const std::vector< int > &which_inputs, const int &num_hidden_layers, const int &num_hidden_nodes, const std::vector< double > &weights, const std::vector< double > &wHiddenOutput, const std::vector< double > &inRanges, const std::vector< double > &inBases, const double &outRange, const double &outBase)
Definition: neuralNetwork.cpp:15
double getOutRange()
Definition: neuralNetwork.cpp:220
Definition: neuralNetwork.h:18
double getOutBase()
Definition: neuralNetwork.cpp:224
std::vector< double > getWeights()
Definition: neuralNetwork.cpp:196
double process(const std::vector< double > &inputVector)
Definition: neuralNetwork.cpp:273