14 #include "../dependencies/json/json.h"
30 const std::vector<size_t>& which_inputs,
31 const size_t num_hidden_layers,
32 const size_t num_hidden_nodes,
33 const std::vector<T>& weights,
34 const std::vector<T>& wHiddenOutput,
35 const std::vector<T>& inRanges,
36 const std::vector<T>& inBases,
50 const std::vector<size_t>& which_inputs,
51 const size_t num_hidden_layer,
52 const size_t num_hidden_nodes);
61 T
run(
const std::vector<T>& inputVector)
const override;
63 void reset()
override;
92 std::vector<size_t> whichInputs;
93 size_t numHiddenLayers;
94 size_t numHiddenNodes;
97 std::vector<T> inputLayer;
98 std::vector<std::vector<T> > hiddenLayers;
102 std::vector<std::vector<std::vector<T> > > weights;
103 std::vector<T> wHiddenOutput;
106 std::vector<T> inRanges;
107 std::vector<T> inBases;
112 inline T activationFunction(T)
const;
123 void train(
const std::vector<trainingExampleTemplate<T> >& trainingSet)
override;
131 void train(
const std::vector<trainingExampleTemplate<T> >& trainingSet,
const std::size_t whichOutput)
override;
138 T learningRate { 0.3 };
140 size_t numEpochs { 500 };
141 size_t currentEpoch { 0 };
144 std::vector<std::vector< std::vector<T> > > deltaWeights {};
145 std::vector<T> deltaHiddenOutput {};
148 T outputErrorGradient;
149 inline T getHiddenErrorGradient(
size_t layer,
size_t neuron);
156 void runInternal(
const std::vector<T>& inputVector, std::vector<T>& inputLayer, std::vector<std::vector<T>>& hiddenLayers, T& outputNeuron)
const;
157 void backpropagate(
const T desiredOutput);
160 void updateWeights();
Definition: baseModel.h:43
Definition: neuralNetwork.h:26
std::vector< T > getInBases() const
Definition: neuralNetwork.cpp:317
T getOutRange() const
Definition: neuralNetwork.cpp:323
std::vector< T > getWeights() const
Definition: neuralNetwork.cpp:286
T getOutBase() const
Definition: neuralNetwork.cpp:329
void train(const std::vector< trainingExampleTemplate< T > > &trainingSet) override
These pertain to the training, and aren't need to run a trained model //.
Definition: neuralNetwork.cpp:452
void setNumHiddenNodes(size_t num_hidden_nodes)
Definition: neuralNetwork.cpp:266
void reset() override
Definition: neuralNetwork.cpp:164
size_t getNumInputs() const override
Definition: neuralNetwork.cpp:234
void setNumHiddenLayers(size_t num_hidden_layers)
Definition: neuralNetwork.cpp:252
std::vector< size_t > getWhichInputs() const override
Definition: neuralNetwork.cpp:240
size_t getNumHiddenNodes() const
Definition: neuralNetwork.cpp:260
T run(const std::vector< T > &inputVector) const override
Definition: neuralNetwork.cpp:391
void setEpochs(const size_t epochs)
Definition: neuralNetwork.cpp:280
~neuralNetwork()
Definition: neuralNetwork.cpp:159
std::vector< T > getInRanges() const
Definition: neuralNetwork.cpp:311
size_t getNumHiddenLayers() const
Definition: neuralNetwork.cpp:246
size_t getEpochs() const
Definition: neuralNetwork.cpp:274
std::vector< T > getWHiddenOutput() const
Definition: neuralNetwork.cpp:305
neuralNetwork(const std::optional< size_t > num_inputs, const std::vector< size_t > &which_inputs, const size_t num_hidden_layers, const size_t num_hidden_nodes, const std::vector< T > &weights, const std::vector< T > &wHiddenOutput, const std::vector< T > &inRanges, const std::vector< T > &inBases, const T outRange, const T outBase)
Definition: neuralNetwork.cpp:41
size_t getCurrentEpoch() const
Definition: neuralNetwork.cpp:578
void getJSONDescription(Json::Value ¤tModel) const override
Definition: neuralNetwork.cpp:336