Skip to content
Snippets Groups Projects
GradientDescent.h 1.24 KiB
Newer Older
/**
 * DESCRIPTION OF THE FILE
 *
 * @author Michal Kravčenko
 * @date 30.7.18 -
 */

#ifndef INC_4NEURO_GRADIENTDESCENT_H
#define INC_4NEURO_GRADIENTDESCENT_H

#include "../settings.h"
#include "../constants.h"
#include "ILearningMethods.h"
#include "../ErrorFunction/ErrorFunctions.h"

class GradientDescent: public ILearningMethods {

private:

    /**
     *
     */
    double tolerance;

    /**
     *
     */
    size_t restart_frequency;

    std::vector<double> *optimal_parameters;

    /**
     *
     * @param gamma
     * @param beta
     * @param c
     * @param grad_norm_prev
     * @param grad_norm
     * @param fi
     * @param fim
     */
     virtual void eval_step_size_mk( double &gamma, double beta, double &c, double grad_norm_prev, double grad_norm, double fi, double fim );
    LIB4NEURO_API GradientDescent( double epsilon = 1e-3, size_t n_to_restart = 100 );
    LIB4NEURO_API ~GradientDescent();
    LIB4NEURO_API virtual void optimize( ErrorFunction &ef );
    LIB4NEURO_API virtual std::vector<double>* get_parameters( );


};


#endif //INC_4NEURO_GRADIENTDESCENT_H