diff --git a/src/NeuralNetwork/ConstructiveAlgorithms/CascadeCorrelation.cpp b/src/NeuralNetwork/ConstructiveAlgorithms/CascadeCorrelation.cpp index 20c56a2..33de8a6 100644 --- a/src/NeuralNetwork/ConstructiveAlgorithms/CascadeCorrelation.cpp +++ b/src/NeuralNetwork/ConstructiveAlgorithms/CascadeCorrelation.cpp @@ -2,7 +2,7 @@ using namespace NeuralNetwork::ConstructiveAlgorihtms; -float CascadeCorrelation::trainOutputs(Cascade::Network &network, const std::vector &patterns) { +float CascadeCorrelation::trainOutputs(Cascade::Network &network, const std::vector &patterns) { std::size_t outputs = patterns[0].second.size(); 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()); } - std::vector patternsForOutput; + std::vector patternsForOutput; for(auto &pattern:patterns) { 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 &patterns) { +float CascadeCorrelation::trainOutputsRandom(std::size_t step, Cascade::Network &network, const std::vector &patterns) { std::size_t outputs = patterns[0].second.size(); - std::vector possibleOutputs; + std::vector < FeedForward::Network * > possibleOutputs; { // first networks is special possibleOutputs.emplace_back(new FeedForward::Network(network.getNeuronSize() - outputs - 1)); FeedForward::Network &p = (*possibleOutputs.back()); @@ -92,7 +92,7 @@ float CascadeCorrelation::trainOutputsRandom(std::size_t step, Cascade::Network } } - std::vector patternsForOutput; + std::vector patternsForOutput; for(auto &pattern:patterns) { patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second); @@ -148,22 +148,22 @@ float CascadeCorrelation::trainOutputsRandom(std::size_t step, Cascade::Network return bestScore; } -std::pair, std::vector> CascadeCorrelation::trainCandidates(Cascade::Network &network, - std::vector> &candidates, - const std::vector &patterns) { +std::pair , std::vector> CascadeCorrelation::trainCandidates(Cascade::Network &network, + std::vector > &candidates, + const std::vector &patterns) { std::size_t outputs = patterns[0].second.size(); - std::vector patternsForOutput; + std::vector patternsForOutput; for(auto &pattern:patterns) { patternsForOutput.emplace_back(getInnerNeuronsOutput(network, pattern.first), pattern.second); } - std::vector> errors(patterns.size()); + std::vector > errors(patterns.size()); std::vector meanErrors(outputs); float sumSquareError = 0; - std::vector> errorsReal(patterns.size()); + std::vector > errorsReal(patterns.size()); for(std::size_t patternNumber = 0; patternNumber < patterns.size(); patternNumber++) { auto &pattern = patterns[patternNumber]; errors[patternNumber].resize(network.outputs()); @@ -192,10 +192,10 @@ std::pair, std::vector> CascadeCor std::vector lastCorrelations = {}; std::vector slopes = {}; float sumVals = 0; - std::shared_ptr candidate = nullptr; + std::shared_ptr candidate = nullptr; }; - std::vector candidatesRegister(candidates.size()); + std::vector candidatesRegister(candidates.size()); for(std::size_t i = 0; i < candidates.size(); i++) { candidatesRegister[i].candidate = candidates[i]; @@ -208,7 +208,7 @@ std::pair, std::vector> CascadeCor std::size_t iterationsWithoutIprovement = 0; float bestCorrelation = 0; float lastCorrelation = 0; - std::shared_ptr bestCandidate = nullptr; + std::shared_ptr bestCandidate = nullptr; std::vector bestCorrelations(outputs);