Added forward-feeding of double-ptrs

digits
mandlm 2015-10-27 15:33:10 +01:00
parent ec654c0e5f
commit 650b4be9fc
4 changed files with 28 additions and 2 deletions

View File

@ -21,7 +21,15 @@ void Layer::setOutputValues(const std::vector<double> & outputValues)
for (const double &value : outputValues)
{
(neuronIt++)->setOutputValue(value);
}
}
}
void Layer::setOutputValues(const double *outputValues)
{
for (size_t neuronIndex = 0; neuronIndex < size(); ++neuronIndex)
{
at(neuronIndex).setOutputValue(outputValues[neuronIndex]);
}
}
void Layer::feedForward(const Layer &inputLayer)

View File

@ -13,6 +13,8 @@ public:
Layer(size_t numNeurons);
void setOutputValues(const std::vector<double> & outputValues);
void setOutputValues(const double *outputValues);
void feedForward(const Layer &inputLayer);
double getWeightedSum(size_t outputNeuron) const;
void connectTo(const Layer & nextLayer);

17
Net.cpp
View File

@ -63,7 +63,22 @@ void Net::feedForward(const std::vector<double> &inputValues)
Layer &nextLayer = *(layerIt + 1);
nextLayer.feedForward(currentLayer);
}
}
}
void Net::feedForward(const double *inputValues)
{
Layer &inputLayer = front();
inputLayer.setOutputValues(inputValues);
for (auto layerIt = begin(); layerIt != end() - 1; ++layerIt)
{
const Layer &currentLayer = *layerIt;
Layer &nextLayer = *(layerIt + 1);
nextLayer.feedForward(currentLayer);
}
}
std::vector<double> Net::getOutput()

1
Net.h
View File

@ -15,6 +15,7 @@ public:
void initialize(std::initializer_list<size_t> layerSizes);
void feedForward(const std::vector<double> &inputValues);
void feedForward(const double *inputValues);
std::vector<double> getOutput();
void backProp(const std::vector<double> &targetValues);