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