Skip to content
Snippets Groups Projects
LearningSequence.h 1.4 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 {
Michal Kravcenko's avatar
Michal Kravcenko committed
        std::vector<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::vector<double> *get_parameters() override;

        /**
         *
         * @param method
         */
Michal Kravcenko's avatar
Michal Kravcenko committed
        LIB4NEURO_API void add_learning_method( LearningMethod * method );