Line data Source code
1 : // SPDX-License-Identifier: Apache-2.0
2 : /**
3 : * Copyright (C) 2021 Parichay Kapoor <pk.kapoor@samsung.com>
4 : *
5 : * @file lr_scheduler_exponential.h
6 : * @date 09 December 2021
7 : * @brief This is Exponential Learning Rate Scheduler class
8 : * @see https://github.com/nnstreamer/nntrainer
9 : * @author Parichay Kapoor <pk.kapoor@samsung.com>
10 : * @bug No known bugs except for NYI items
11 : *
12 : */
13 :
14 : #ifndef __LEARNING_RATE_SCHEDULER_EXPONENTIAL__
15 : #define __LEARNING_RATE_SCHEDULER_EXPONENTIAL__
16 : #ifdef __cplusplus
17 :
18 : #include <string>
19 :
20 : #include <lr_scheduler_constant.h>
21 :
22 : namespace nntrainer {
23 :
24 : /**
25 : * @class Constant Learning Rate Scheduler class
26 : * @brief class for constant Learning Rate Schedulers
27 : */
28 83 : class ExponentialLearningRateScheduler final
29 : : public ConstantLearningRateScheduler {
30 :
31 : public:
32 : /**
33 : * @brief Construct a new exponential learning rate scheduler object
34 : *
35 : */
36 : ExponentialLearningRateScheduler();
37 :
38 : /**
39 : * @copydoc LearningRateScheduler::getLearningRate(size_t iteration) const
40 : *
41 : */
42 : double getLearningRate(size_t iteration) override;
43 :
44 : /**
45 : * @copydoc LearningRateScheduler::finalize()
46 : *
47 : */
48 : void finalize() override;
49 :
50 : /**
51 : * @copydoc LearningRateScheduler::exportTo(Exporter &exporter, const
52 : * ml::train::ExportMethods& method)
53 : *
54 : */
55 : void exportTo(Exporter &exporter,
56 : const ml::train::ExportMethods &method) const override;
57 :
58 : /**
59 : * @copydoc LearningRateScheduler::setProperty(const std::vector<std::string>
60 : * &values)
61 : */
62 : void setProperty(const std::vector<std::string> &values) override;
63 :
64 : /**
65 : * @copydoc LearningRateScheduler::getType() const
66 : *
67 : */
68 0 : const std::string getType() const override {
69 0 : return ExponentialLearningRateScheduler::type;
70 : }
71 :
72 : static constexpr const char *type = "exponential";
73 :
74 : private:
75 : std::tuple<props::DecayRate, props::DecaySteps> lr_props;
76 : };
77 :
78 : } /* namespace nntrainer */
79 :
80 : #endif /* __cplusplus */
81 : #endif /* __LEARNING_RATE_SCHEDULER_EXPONENTIAL__ */
|