-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenums_bindings.cpp
More file actions
95 lines (86 loc) · 4 KB
/
enums_bindings.cpp
File metadata and controls
95 lines (86 loc) · 4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
* @file enums_bindings.cpp
* @brief Python bindings for KortexDL enums
* @author Mostafa Saad
* @date 2025
*/
#include <pybind11/functional.h>
#include <pybind11/numpy.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include "KortexDL.hpp"
namespace py = pybind11;
using namespace KortexDL;
void bind_enums(py::module &m) {
// ActivationType enum
py::enum_<KortexDL::ActivationType>(m, "ActivationType")
.value("Linear", KortexDL::ActivationType::Linear)
.value("ReLU", KortexDL::ActivationType::ReLU)
.value("Sigmoid", KortexDL::ActivationType::Sigmoid)
.value("Tanh", KortexDL::ActivationType::Tanh)
.value("Softmax", KortexDL::ActivationType::Softmax)
.value("LeakyReLU", KortexDL::ActivationType::LeakyReLU)
.value("ELU", KortexDL::ActivationType::ELU)
.value("Swish", KortexDL::ActivationType::Swish)
.value("GELU", KortexDL::ActivationType::GELU)
.value("SELU", KortexDL::ActivationType::SELU)
.value("Mish", KortexDL::ActivationType::Mish)
.value("Softplus", KortexDL::ActivationType::Softplus)
.value("Softsign", KortexDL::ActivationType::Softsign)
.value("HardSigmoid", KortexDL::ActivationType::HardSigmoid)
.export_values();
// LossType enum
py::enum_<KortexDL::LossType>(m, "LossType")
.value("MSE", KortexDL::LossType::MSE)
.value("MAE", KortexDL::LossType::MAE)
.value("BINARY_CE", KortexDL::LossType::BINARY_CE)
.value("CATEGORICAL_CE", KortexDL::LossType::CATEGORICAL_CE)
.value("HUBER", KortexDL::LossType::HUBER)
.value("HINGE", KortexDL::LossType::HINGE)
.value("SQUARED_HINGE", KortexDL::LossType::SQUARED_HINGE)
.value("KL_DIVERGENCE", KortexDL::LossType::KL_DIVERGENCE)
.value("POISSON", KortexDL::LossType::POISSON)
.value("LOG_COSH", KortexDL::LossType::LOG_COSH)
.export_values();
// OptimizerType enum
py::enum_<KortexDL::OptimizerType>(m, "OptimizerType")
.value("SGD", KortexDL::OptimizerType::SGD)
.value("Momentum", KortexDL::OptimizerType::Momentum)
.value("Nesterov", KortexDL::OptimizerType::Nesterov)
.value("Adagrad", KortexDL::OptimizerType::Adagrad)
.value("RMSprop", KortexDL::OptimizerType::RMSprop)
.value("Adam", KortexDL::OptimizerType::Adam)
.value("AdamW", KortexDL::OptimizerType::AdamW)
.value("Adadelta", KortexDL::OptimizerType::Adadelta)
.value("Adamax", KortexDL::OptimizerType::Adamax)
.value("Nadam", KortexDL::OptimizerType::Nadam)
.value("Ftrl", KortexDL::OptimizerType::Ftrl)
.value("Lion", KortexDL::OptimizerType::Lion)
.export_values();
// LRSchedulerType enum
py::enum_<KortexDL::LRSchedulerType>(m, "LRSchedulerType")
.value("Step", KortexDL::LRSchedulerType::Step)
.value("Exponential", KortexDL::LRSchedulerType::Exponential)
.value("CosineAnnealing", KortexDL::LRSchedulerType::CosineAnnealing)
.value("ReduceLROnPlateau", KortexDL::LRSchedulerType::ReduceLROnPlateau)
.value("Cyclic", KortexDL::LRSchedulerType::Cyclic)
.value("OneCycle", KortexDL::LRSchedulerType::OneCycle)
.export_values();
// RegularizationType enum
py::enum_<KortexDL::RegularizationType>(m, "RegularizationType")
.value("None", KortexDL::RegularizationType::None)
.value("L1", KortexDL::RegularizationType::L1)
.value("L2", KortexDL::RegularizationType::L2)
.value("L1L2", KortexDL::RegularizationType::L1L2)
.value("Dropout", KortexDL::RegularizationType::Dropout)
.value("WeightDecay", KortexDL::RegularizationType::WeightDecay)
.value("MaxNorm", KortexDL::RegularizationType::MaxNorm)
.value("UnitNorm", KortexDL::RegularizationType::UnitNorm)
.value("Orthogonal", KortexDL::RegularizationType::Orthogonal)
.export_values();
// ExecutionPolicy enum
py::enum_<KortexDL::ExecutionPolicy>(m, "ExecutionPolicy")
.value("Sequential", KortexDL::ExecutionPolicy::Sequential)
.value("Parallel", KortexDL::ExecutionPolicy::Parallel)
.export_values();
}