Skip to content
Snippets Groups Projects
LearningSequence.h 1.45 KiB
Newer Older
/**
 * 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"
Michal Kravcenko's avatar
Michal Kravcenko committed
#include "LearningMethod.h"
Michal Kravcenko's avatar
Michal Kravcenko committed
    class LearningSequence : public LearningMethod {
        std::vector<std::shared_ptr<LearningMethod>> learning_sequence;
        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;
        LIB4NEURO_API void add_learning_method( std::shared_ptr<LearningMethod> method );