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"
namespace lib4neuro {
class GradientDescent : public ILearningMethods {
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
*
*/
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);
public:
/**
*
* @param epsilon
*/
LIB4NEURO_API GradientDescent(double epsilon = 1e-3, size_t n_to_restart = 100);
/**
*
*/
LIB4NEURO_API ~GradientDescent();
/**
*
* @param ef
*/
LIB4NEURO_API virtual void optimize(lib4neuro::ErrorFunction &ef);
/**
*
* @return
*/
LIB4NEURO_API virtual std::vector<double> *get_parameters();
};
}
#endif //INC_4NEURO_GRADIENTDESCENT_H