#include "Layer.h" Layer::Layer(unsigned int numNeurons) { for (unsigned int i = 0; i < numNeurons; ++i) { push_back(Neuron()); } } void Layer::setOutputValues(const std::vector & outputValues) { if (size() - 1 != outputValues.size()) { throw std::exception("The number of output values has to match the layer size"); } auto neuronIt = begin(); for (const double &value : outputValues) { neuronIt->setOutputValue(value); neuronIt++; } } void Layer::feedForward(const Layer &inputLayer) { int neuronNumber = 0; for (auto neuronIt = begin(); neuronIt != end(); ++neuronIt) { neuronIt->feedForward(inputLayer.getWeightedSum(neuronNumber++)); } } double Layer::getWeightedSum(int outputNeuron) const { double sum = 0.0; for (const Neuron &neuron : *this) { sum += neuron.getWeightedOutputValue(outputNeuron); } return sum; } void Layer::connectTo(const Layer & nextLayer) { for (Neuron &neuron : *this) { neuron.createOutputWeights(nextLayer.size()); } }