SHOGUN
4.1.0
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
src
shogun
optimization
InverseScalingLearningRate.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) The Shogun Machine Learning Toolbox
3
* Written (w) 2015 Wu Lin
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions are met:
8
*
9
* 1. Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*
26
* The views and conclusions contained in the software and documentation are those
27
* of the authors and should not be interpreted as representing official policies,
28
* either expressed or implied, of the Shogun Development Team.
29
*
30
*/
31
32
#ifndef INVERSESCALINGLEARNINGRATE_H
33
#define INVERSESCALINGLEARNINGRATE_H
34
35
#include <
shogun/optimization/LearningRate.h
>
36
#include <
shogun/mathematics/Math.h
>
37
38
namespace
shogun
39
{
53
class
InverseScalingLearningRate
:
public
LearningRate
54
{
55
public
:
56
/* Constructor */
57
InverseScalingLearningRate
():
LearningRate
() { init(); }
58
59
/* Destructor */
60
virtual
~InverseScalingLearningRate
() {}
61
67
virtual
float64_t
get_learning_rate
(int32_t iter_counter)
68
{
69
REQUIRE
(iter_counter,
"Iter_counter (%d) must be positive\n"
, iter_counter);
70
return
m_initial_learning_rate
/
CMath::pow
(
m_intercept
+
m_slope
*iter_counter,
m_exponent
);
71
}
72
77
virtual
void
set_initial_learning_rate
(
float64_t
initial_learning_rate)
78
{
79
REQUIRE
(initial_learning_rate>0.0,
"Initial learning rate (%f) should be positive\n"
,
80
initial_learning_rate);
81
m_initial_learning_rate
=initial_learning_rate;
82
}
83
88
virtual
void
set_exponent
(
float64_t
exponent)
89
{
90
REQUIRE
(exponent>0.0,
"Exponent (%f) should be positive\n"
, exponent);
91
m_exponent
=exponent;
92
}
93
98
virtual
void
set_slope
(
float64_t
slope)
99
{
100
REQUIRE
(slope>0.0,
"Slope (%f) should be positive\n"
, slope);
101
m_slope
=slope;
102
}
103
108
virtual
void
set_intercept
(
float64_t
intercept)
109
{
110
REQUIRE
(intercept>=0,
"Intercept (%f) should be non-negative\n"
,
111
intercept);
112
m_intercept
=intercept;
113
}
114
119
virtual
void
update_context
(
CMinimizerContext
* context)
120
{
121
REQUIRE
(context,
"Context must set\n"
);
122
}
123
129
virtual
void
load_from_context
(
CMinimizerContext
* context)
130
{
131
REQUIRE
(context,
"Context must set\n"
);
132
}
133
protected
:
135
float64_t
m_exponent
;
137
float64_t
m_slope
;
139
float64_t
m_intercept
;
141
float64_t
m_initial_learning_rate
;
142
private
:
144
void
init()
145
{
146
m_exponent=0.5;
147
m_initial_learning_rate=1.0;
148
m_intercept=0.0;
149
m_slope=1.0;
150
}
151
};
152
153
}
154
155
#endif
shogun::InverseScalingLearningRate::m_slope
float64_t m_slope
Definition:
InverseScalingLearningRate.h:137
shogun::InverseScalingLearningRate::update_context
virtual void update_context(CMinimizerContext *context)
Definition:
InverseScalingLearningRate.h:119
shogun::LearningRate
The base class about learning rate for descent-based minimizers.
Definition:
LearningRate.h:46
Math.h
shogun::InverseScalingLearningRate::m_intercept
float64_t m_intercept
Definition:
InverseScalingLearningRate.h:139
shogun::CMinimizerContext
The class is used to serialize and deserialize variables for the optimization framework.
Definition:
MinimizerContext.h:45
REQUIRE
#define REQUIRE(x,...)
Definition:
SGIO.h:206
shogun::InverseScalingLearningRate::~InverseScalingLearningRate
virtual ~InverseScalingLearningRate()
Definition:
InverseScalingLearningRate.h:60
shogun::InverseScalingLearningRate::get_learning_rate
virtual float64_t get_learning_rate(int32_t iter_counter)
Definition:
InverseScalingLearningRate.h:67
shogun::InverseScalingLearningRate::set_slope
virtual void set_slope(float64_t slope)
Definition:
InverseScalingLearningRate.h:98
shogun::InverseScalingLearningRate::set_intercept
virtual void set_intercept(float64_t intercept)
Definition:
InverseScalingLearningRate.h:108
shogun::InverseScalingLearningRate::m_initial_learning_rate
float64_t m_initial_learning_rate
Definition:
InverseScalingLearningRate.h:141
float64_t
double float64_t
Definition:
common.h:50
shogun::InverseScalingLearningRate::load_from_context
virtual void load_from_context(CMinimizerContext *context)
Definition:
InverseScalingLearningRate.h:129
shogun::InverseScalingLearningRate::InverseScalingLearningRate
InverseScalingLearningRate()
Definition:
InverseScalingLearningRate.h:57
shogun::InverseScalingLearningRate::set_initial_learning_rate
virtual void set_initial_learning_rate(float64_t initial_learning_rate)
Definition:
InverseScalingLearningRate.h:77
shogun::InverseScalingLearningRate::set_exponent
virtual void set_exponent(float64_t exponent)
Definition:
InverseScalingLearningRate.h:88
shogun::InverseScalingLearningRate
The implements the inverse scaling learning rate.
Definition:
InverseScalingLearningRate.h:53
shogun::InverseScalingLearningRate::m_exponent
float64_t m_exponent
Definition:
InverseScalingLearningRate.h:135
shogun
all of classes and functions are contained in the shogun namespace
Definition:
class_list.h:18
LearningRate.h
shogun::CMath::pow
static int32_t pow(bool x, int32_t n)
Definition:
Math.h:535
SHOGUN
Machine Learning Toolbox - Documentation