/** * This file contains an interface for all learning methods in the library * * @author Michal KravĨenko * @date 12.8.18 - */ #ifndef LIB4NEURO_ILEARNINGMETHODS_H #define LIB4NEURO_ILEARNINGMETHODS_H #include <vector> #include "../ErrorFunction/ErrorFunctions.h" namespace lib4neuro { class LearningMethod { public: /** * Runs the method specific learning algorithm minimizing the given error function */ virtual void optimize(lib4neuro::ErrorFunction& ef, std::ofstream* ofs = nullptr) = 0; /** * Updates the optimal weight&bias settings in the passed vector */ virtual std::shared_ptr<std::vector<double>> get_parameters() = 0; }; class GradientLearningMethod : public LearningMethod { public: /** * Runs the method specific learning algorithm minimizing the given error function */ virtual void optimize(ErrorFunction& ef, std::ofstream* ofs = nullptr) override; }; } #endif //LIB4NEURO_ILEARNINGMETHODS_H