#pragma once #include #include #include namespace NeuralNetwork { namespace Learning { /** @class PerceptronLearning * @brief Basic algorithm for learning Perceptron */ class PerceptronLearning { public: inline PerceptronLearning(FeedForward::Perceptron &perceptronNetwork): perceptron(perceptronNetwork), learningCoefficient(0.1) { } 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::Perceptron &perceptron; float learningCoefficient; }; } }