#pragma once #include #include #include #include "CorrectionFunction/Linear.h" namespace NeuralNetwork { namespace Learning { /** @class BackPropagation * @brief */ class PerceptronLearning { public: inline PerceptronLearning(FeedForward::Network &feedForwardNetwork): network(feedForwardNetwork), learningCoefficient(0.4) { } virtual ~PerceptronLearning() { } PerceptronLearning(const PerceptronLearning&)=delete; PerceptronLearning& operator=(const NeuralNetwork::Learning::PerceptronLearning&) = delete; void teach(const std::vector &input, const std::vector &output); inline virtual void setLearningCoefficient (const float& coefficient) { learningCoefficient=coefficient; } protected: FeedForward::Network &network; float learningCoefficient; }; } }