Skip to content
Snippets Groups Projects
LearningMethod.h 1.07 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * 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::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