SHOGUN
4.1.0
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
optimization
InverseScalingLearningRate.h
浏览该文件的文档.
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
机器学习工具包 - 项目文档