cc: refactor

This commit is contained in:
2016-05-09 22:44:35 +02:00
parent fb052d01b0
commit 544ef20afc

View File

@@ -2,7 +2,7 @@
using namespace NeuralNetwork::ConstructiveAlgorihtms; using namespace NeuralNetwork::ConstructiveAlgorihtms;
float CascadeCorrelation::trainOutputs(Cascade::Network &network, const std::vector<CascadeCorrelation::TrainingPattern> &patterns) { float CascadeCorrelation::trainOutputs(Cascade::Network &network, const std::vector <CascadeCorrelation::TrainingPattern> &patterns) {
std::size_t outputs = patterns[0].second.size(); std::size_t outputs = patterns[0].second.size();
FeedForward::Network p(network.getNeuronSize() - outputs - 1); FeedForward::Network p(network.getNeuronSize() - outputs - 1);
@@ -14,7 +14,7 @@ float CascadeCorrelation::trainOutputs(Cascade::Network &network, const std::vec
p[1][neuron + 1].setActivationFunction(network.getOutputNeurons()[neuron]->getActivationFunction()); p[1][neuron + 1].setActivationFunction(network.getOutputNeurons()[neuron]->getActivationFunction());
} }
std::vector<TrainingPattern> patternsForOutput; std::vector <TrainingPattern> patternsForOutput;
for(auto &pattern:patterns) { for(auto &pattern:patterns) {
patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second); patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second);
@@ -54,10 +54,10 @@ float CascadeCorrelation::trainOutputs(Cascade::Network &network, const std::vec
} }
float CascadeCorrelation::trainOutputsRandom(std::size_t step, Cascade::Network &network, const std::vector<CascadeCorrelation::TrainingPattern> &patterns) { float CascadeCorrelation::trainOutputsRandom(std::size_t step, Cascade::Network &network, const std::vector <CascadeCorrelation::TrainingPattern> &patterns) {
std::size_t outputs = patterns[0].second.size(); std::size_t outputs = patterns[0].second.size();
std::vector<FeedForward::Network *> possibleOutputs; std::vector < FeedForward::Network * > possibleOutputs;
{ // first networks is special { // first networks is special
possibleOutputs.emplace_back(new FeedForward::Network(network.getNeuronSize() - outputs - 1)); possibleOutputs.emplace_back(new FeedForward::Network(network.getNeuronSize() - outputs - 1));
FeedForward::Network &p = (*possibleOutputs.back()); FeedForward::Network &p = (*possibleOutputs.back());
@@ -92,7 +92,7 @@ float CascadeCorrelation::trainOutputsRandom(std::size_t step, Cascade::Network
} }
} }
std::vector<TrainingPattern> patternsForOutput; std::vector <TrainingPattern> patternsForOutput;
for(auto &pattern:patterns) { for(auto &pattern:patterns) {
patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second); patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second);
@@ -148,22 +148,22 @@ float CascadeCorrelation::trainOutputsRandom(std::size_t step, Cascade::Network
return bestScore; return bestScore;
} }
std::pair<std::shared_ptr<NeuralNetwork::Neuron>, std::vector<float>> CascadeCorrelation::trainCandidates(Cascade::Network &network, std::pair <std::shared_ptr<NeuralNetwork::Neuron>, std::vector<float>> CascadeCorrelation::trainCandidates(Cascade::Network &network,
std::vector<std::shared_ptr<Neuron>> &candidates, std::vector <std::shared_ptr<Neuron>> &candidates,
const std::vector<TrainingPattern> &patterns) { const std::vector <TrainingPattern> &patterns) {
std::size_t outputs = patterns[0].second.size(); std::size_t outputs = patterns[0].second.size();
std::vector<TrainingPattern> patternsForOutput; std::vector <TrainingPattern> patternsForOutput;
for(auto &pattern:patterns) { for(auto &pattern:patterns) {
patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second); patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second);
} }
std::vector<std::vector<float>> errors(patterns.size()); std::vector <std::vector<float>> errors(patterns.size());
std::vector<float> meanErrors(outputs); std::vector<float> meanErrors(outputs);
float sumSquareError = 0; float sumSquareError = 0;
std::vector<std::vector<float>> errorsReal(patterns.size()); std::vector <std::vector<float>> errorsReal(patterns.size());
for(std::size_t patternNumber = 0; patternNumber < patterns.size(); patternNumber++) { for(std::size_t patternNumber = 0; patternNumber < patterns.size(); patternNumber++) {
auto &pattern = patterns[patternNumber]; auto &pattern = patterns[patternNumber];
errors[patternNumber].resize(network.outputs()); errors[patternNumber].resize(network.outputs());
@@ -192,10 +192,10 @@ std::pair<std::shared_ptr<NeuralNetwork::Neuron>, std::vector<float>> CascadeCor
std::vector<float> lastCorrelations = {}; std::vector<float> lastCorrelations = {};
std::vector<float> slopes = {}; std::vector<float> slopes = {};
float sumVals = 0; float sumVals = 0;
std::shared_ptr<Neuron> candidate = nullptr; std::shared_ptr <Neuron> candidate = nullptr;
}; };
std::vector<CAND> candidatesRegister(candidates.size()); std::vector <CAND> candidatesRegister(candidates.size());
for(std::size_t i = 0; i < candidates.size(); i++) { for(std::size_t i = 0; i < candidates.size(); i++) {
candidatesRegister[i].candidate = candidates[i]; candidatesRegister[i].candidate = candidates[i];
@@ -208,7 +208,7 @@ std::pair<std::shared_ptr<NeuralNetwork::Neuron>, std::vector<float>> CascadeCor
std::size_t iterationsWithoutIprovement = 0; std::size_t iterationsWithoutIprovement = 0;
float bestCorrelation = 0; float bestCorrelation = 0;
float lastCorrelation = 0; float lastCorrelation = 0;
std::shared_ptr<Neuron> bestCandidate = nullptr; std::shared_ptr <Neuron> bestCandidate = nullptr;
std::vector<float> bestCorrelations(outputs); std::vector<float> bestCorrelations(outputs);