Added forward-feeding of double-ptrs

This commit is contained in:
Michael Mandl 2015-10-27 15:33:10 +01:00
parent ec654c0e5f
commit 650b4be9fc
4 changed files with 28 additions and 2 deletions

View file

@ -24,6 +24,14 @@ void Layer::setOutputValues(const std::vector<double> & outputValues)
} }
} }
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) void Layer::feedForward(const Layer &inputLayer)
{ {
for (size_t neuronNumber = 0; neuronNumber < sizeWithoutBiasNeuron(); ++neuronNumber) for (size_t neuronNumber = 0; neuronNumber < sizeWithoutBiasNeuron(); ++neuronNumber)

View file

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

15
Net.cpp
View file

@ -66,6 +66,21 @@ void Net::feedForward(const std::vector<double> &inputValues)
} }
} }
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() std::vector<double> Net::getOutput()
{ {
std::vector<double> result; std::vector<double> result;

1
Net.h
View file

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