/** * DESCRIPTION OF THE FILE * * @author Michal KravĨenko * @date 19.2.19 - */ #ifndef LIB4NEURO_LEARNINGSEQUENCE_H #define LIB4NEURO_LEARNINGSEQUENCE_H #include <4neuro.h> #include "../settings.h" #include "../constants.h" #include "LearningMethod.h" namespace lib4neuro { /** * */ class LearningSequence : public LearningMethod { private: /** * */ std::vector<std::shared_ptr<LearningMethod>> learning_sequence; /** * */ double tol; /** * */ std::vector<double> best_parameters; // = nullptr; /** * */ int max_number_of_cycles = -1; public: /** * */ LIB4NEURO_API explicit LearningSequence( double tolerance = 1e-6, int max_n_cycles = -1); /** * Deallocates the instance */ LIB4NEURO_API ~LearningSequence(); /** * * @param ef * @param ofs */ LIB4NEURO_API void optimize(lib4neuro::ErrorFunction &ef, std::ofstream* ofs = nullptr) override; /** * * @return */ LIB4NEURO_API std::shared_ptr<std::vector<double>> get_parameters() override; /** * * @param method */ LIB4NEURO_API void add_learning_method( std::shared_ptr<LearningMethod> method ); }; } #endif //LIB4NEURO_LEARNINGSEQUENCE_H