cc: refactor
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user