Imported Upstream version 1.25.0
[platform/core/ml/nnfw.git] / onert-micro / luci-interpreter / include / luci_interpreter / TrainingSettings.h
1 /*
2  * Copyright (c) 2023 Samsung Electronics Co., Ltd. All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifdef ENABLE_TRAINING
18
19 #ifndef LUCI_INTERPRETER_TRAINING_SETTINGS_H
20 #define LUCI_INTERPRETER_TRAINING_SETTINGS_H
21
22 #include <stdint.h>
23
24 namespace luci_interpreter
25 {
26
27 namespace training
28 {
29
30 enum Status
31 {
32   Ok,
33   Error,
34   EnableTrainModeError,
35   DoubleTrainModeError
36 };
37
38 enum MetricsTypeEnum
39 {
40   MSE,
41   MAE
42 };
43
44 enum LossTypeEnum
45 {
46   MSE_Loss
47 };
48
49 enum OptimizerTypeEnum
50 {
51   SGD
52 };
53
54 struct TrainingSettings
55 {
56   MetricsTypeEnum metric = MSE;
57   LossTypeEnum error_type = MSE_Loss;
58   OptimizerTypeEnum optimizer_type = SGD;
59   uint32_t number_of_epochs = 1;
60   uint32_t batch_size = 1;
61   float learning_rate = 0.00001;
62   uint32_t number_of_last_trainable_layers = 1;
63 };
64
65 } // namespace training
66 } // namespace luci_interpreter
67
68 #endif // LUCI_INTERPRETER_TRAINING_SETTINGS_H
69
70 #endif // ENABLE_TRAINING