Skip to content
Snippets Groups Projects
Commit e90eeb92 authored by Olivier BICHLER's avatar Olivier BICHLER
Browse files

Added Type binding

parent bc0db7b2
No related branches found
No related tags found
2 merge requests!212Version 0.3.0,!186Refactor OperatorImpl for backend/export
Pipeline #53748 passed
Showing
with 36 additions and 16 deletions
...@@ -24,7 +24,8 @@ void declare_Add(py::module &m) { ...@@ -24,7 +24,8 @@ void declare_Add(py::module &m) {
py::class_<Add_Op, std::shared_ptr<Add_Op>, OperatorTensor>(m, "AddOp", py::multiple_inheritance()) py::class_<Add_Op, std::shared_ptr<Add_Op>, OperatorTensor>(m, "AddOp", py::multiple_inheritance())
.def(py::init<const IOIndex_t>(), py::arg("nb_inputs")) .def(py::init<const IOIndex_t>(), py::arg("nb_inputs"))
.def_static("get_inputs_name", &Add_Op::getInputsName) .def_static("get_inputs_name", &Add_Op::getInputsName)
.def_static("get_outputs_name", &Add_Op::getOutputsName); .def_static("get_outputs_name", &Add_Op::getOutputsName)
.def_readonly_static("Type", &Add_Op::Type);
declare_registrable<Add_Op>(m, "AddOp"); declare_registrable<Add_Op>(m, "AddOp");
......
...@@ -45,7 +45,8 @@ template <DimIdx_t DIM> void declare_AvgPoolingOp(py::module &m) { ...@@ -45,7 +45,8 @@ template <DimIdx_t DIM> void declare_AvgPoolingOp(py::module &m) {
py::arg("kernel_dims"), py::arg("kernel_dims"),
py::arg("stride_dims") = create_array<DimSize_t,DIM>(1)) py::arg("stride_dims") = create_array<DimSize_t,DIM>(1))
.def("get_inputs_name", &AvgPooling_Op<DIM>::getInputsName) .def("get_inputs_name", &AvgPooling_Op<DIM>::getInputsName)
.def("get_outputs_name", &AvgPooling_Op<DIM>::getOutputsName); .def("get_outputs_name", &AvgPooling_Op<DIM>::getOutputsName)
.def_readonly_static("Type", &AvgPooling_Op<DIM>::Type);
declare_registrable<AvgPooling_Op<DIM>>(m, pyClassName); declare_registrable<AvgPooling_Op<DIM>>(m, pyClassName);
......
...@@ -30,7 +30,8 @@ void declare_BatchNormOp(py::module& m) { ...@@ -30,7 +30,8 @@ void declare_BatchNormOp(py::module& m) {
py::arg("epsilon"), py::arg("epsilon"),
py::arg("momentum")) py::arg("momentum"))
.def_static("get_inputs_name", &BatchNorm_Op<DIM>::getInputsName) .def_static("get_inputs_name", &BatchNorm_Op<DIM>::getInputsName)
.def_static("get_outputs_name", &BatchNorm_Op<DIM>::getOutputsName); .def_static("get_outputs_name", &BatchNorm_Op<DIM>::getOutputsName)
.def_readonly_static("Type", &BatchNorm_Op<DIM>::Type);
declare_registrable<BatchNorm_Op<DIM>>(m, pyClassName); declare_registrable<BatchNorm_Op<DIM>>(m, pyClassName);
......
...@@ -25,7 +25,8 @@ void init_Concat(py::module& m) { ...@@ -25,7 +25,8 @@ void init_Concat(py::module& m) {
py::arg("nb_inputs"), py::arg("nb_inputs"),
py::arg("axis")) py::arg("axis"))
.def_static("get_inputs_name", &Concat_Op::getInputsName) .def_static("get_inputs_name", &Concat_Op::getInputsName)
.def_static("get_outputs_name", &Concat_Op::getOutputsName); .def_static("get_outputs_name", &Concat_Op::getOutputsName)
.def_readonly_static("Type", &Concat_Op::Type);
declare_registrable<Concat_Op>(m, "ConcatOp"); declare_registrable<Concat_Op>(m, "ConcatOp");
......
...@@ -45,6 +45,7 @@ template <DimIdx_t DIM> void declare_ConvOp(py::module &m) { ...@@ -45,6 +45,7 @@ template <DimIdx_t DIM> void declare_ConvOp(py::module &m) {
.def_static("get_outputs_name", &Conv_Op<DIM>::getOutputsName) .def_static("get_outputs_name", &Conv_Op<DIM>::getOutputsName)
.def("in_channels", &Conv_Op<DIM>::inChannels) .def("in_channels", &Conv_Op<DIM>::inChannels)
.def("out_channels", &Conv_Op<DIM>::outChannels) .def("out_channels", &Conv_Op<DIM>::outChannels)
.def_readonly_static("Type", &Conv_Op<DIM>::Type)
; ;
declare_registrable<Conv_Op<DIM>>(m, pyClassName); declare_registrable<Conv_Op<DIM>>(m, pyClassName);
......
...@@ -39,7 +39,8 @@ template <DimIdx_t DIM> void declare_ConvDepthWiseOp(py::module &m) { ...@@ -39,7 +39,8 @@ template <DimIdx_t DIM> void declare_ConvDepthWiseOp(py::module &m) {
py::arg("dilation_dims")) py::arg("dilation_dims"))
.def_static("get_inputs_name", &ConvDepthWise_Op<DIM>::getInputsName) .def_static("get_inputs_name", &ConvDepthWise_Op<DIM>::getInputsName)
.def_static("get_outputs_name", &ConvDepthWise_Op<DIM>::getOutputsName) .def_static("get_outputs_name", &ConvDepthWise_Op<DIM>::getOutputsName)
.def("nb_channels", &ConvDepthWise_Op<DIM>::nbChannels); .def("nb_channels", &ConvDepthWise_Op<DIM>::nbChannels)
.def_readonly_static("Type", &ConvDepthWise_Op<DIM>::Type);
declare_registrable<ConvDepthWise_Op<DIM>>(m, pyClassName); declare_registrable<ConvDepthWise_Op<DIM>>(m, pyClassName);
m.def(("ConvDepthWise" + std::to_string(DIM) + "D").c_str(), [](const DimSize_t nb_channels, m.def(("ConvDepthWise" + std::to_string(DIM) + "D").c_str(), [](const DimSize_t nb_channels,
......
...@@ -22,7 +22,8 @@ void init_Div(py::module& m) { ...@@ -22,7 +22,8 @@ void init_Div(py::module& m) {
py::class_<Div_Op, std::shared_ptr<Div_Op>, OperatorTensor>(m, "DivOp", py::multiple_inheritance()) py::class_<Div_Op, std::shared_ptr<Div_Op>, OperatorTensor>(m, "DivOp", py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &Div_Op::getInputsName) .def_static("get_inputs_name", &Div_Op::getInputsName)
.def_static("get_outputs_name", &Div_Op::getOutputsName); .def_static("get_outputs_name", &Div_Op::getOutputsName)
.def_readonly_static("Type", &Div_Op::Type);
declare_registrable<Div_Op>(m, "DivOp"); declare_registrable<Div_Op>(m, "DivOp");
m.def("Div", &Div, py::arg("name") = ""); m.def("Div", &Div, py::arg("name") = "");
} }
......
...@@ -22,7 +22,8 @@ void init_Erf(py::module& m) { ...@@ -22,7 +22,8 @@ void init_Erf(py::module& m) {
py::class_<Erf_Op, std::shared_ptr<Erf_Op>, OperatorTensor>(m, "ErfOp", py::multiple_inheritance()) py::class_<Erf_Op, std::shared_ptr<Erf_Op>, OperatorTensor>(m, "ErfOp", py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &Erf_Op::getInputsName) .def_static("get_inputs_name", &Erf_Op::getInputsName)
.def_static("get_outputs_name", &Erf_Op::getOutputsName); .def_static("get_outputs_name", &Erf_Op::getOutputsName)
.def_readonly_static("Type", &Erf_Op::Type);
declare_registrable<Erf_Op>(m, "ErfOp"); declare_registrable<Erf_Op>(m, "ErfOp");
......
...@@ -28,6 +28,7 @@ void declare_FC(py::module &m) { ...@@ -28,6 +28,7 @@ void declare_FC(py::module &m) {
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &FC_Op::getInputsName) .def_static("get_inputs_name", &FC_Op::getInputsName)
.def_static("get_outputs_name", &FC_Op::getOutputsName) .def_static("get_outputs_name", &FC_Op::getOutputsName)
.def_readonly_static("Type", &FC_Op::Type)
.def("out_channels", &FC_Op::outChannels) .def("out_channels", &FC_Op::outChannels)
// .def_property_readonly("a", &FC_Op::get_a) // .def_property_readonly("a", &FC_Op::get_a)
// .def_property_readonly("a", [](const FC_Op& self) { // .def_property_readonly("a", [](const FC_Op& self) {
......
...@@ -29,7 +29,8 @@ void init_Gather(py::module& m) { ...@@ -29,7 +29,8 @@ void init_Gather(py::module& m) {
py::arg("indices"), py::arg("indices"),
py::arg("gathered_shape")) py::arg("gathered_shape"))
.def_static("get_inputs_name", &Gather_Op::getInputsName) .def_static("get_inputs_name", &Gather_Op::getInputsName)
.def_static("get_outputs_name", &Gather_Op::getOutputsName); .def_static("get_outputs_name", &Gather_Op::getOutputsName)
.def_readonly_static("Type", &Gather_Op::Type);
declare_registrable<Gather_Op>(m, "GatherOp"); declare_registrable<Gather_Op>(m, "GatherOp");
......
...@@ -25,7 +25,8 @@ void init_GlobalAveragePooling(py::module &m) { ...@@ -25,7 +25,8 @@ void init_GlobalAveragePooling(py::module &m) {
py::multiple_inheritance()) py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &GlobalAveragePooling_Op::getInputsName) .def_static("get_inputs_name", &GlobalAveragePooling_Op::getInputsName)
.def_static("get_outputs_name", &GlobalAveragePooling_Op::getOutputsName); .def_static("get_outputs_name", &GlobalAveragePooling_Op::getOutputsName)
.def_readonly_static("Type", &GlobalAveragePooling_Op::Type);
declare_registrable<GlobalAveragePooling_Op>(m, pyClassName); declare_registrable<GlobalAveragePooling_Op>(m, pyClassName);
......
...@@ -58,6 +58,7 @@ void declare_GridSampleOp(py::module &m) { ...@@ -58,6 +58,7 @@ void declare_GridSampleOp(py::module &m) {
py::arg("alogn_corners") = false) py::arg("alogn_corners") = false)
.def_static("get_inputs_name", &GridSample_Op::getInputsName) .def_static("get_inputs_name", &GridSample_Op::getInputsName)
.def_static("get_outputs_name", &GridSample_Op::getOutputsName) .def_static("get_outputs_name", &GridSample_Op::getOutputsName)
.def_readonly_static("Type", &GridSample_Op::Type)
; ;
declare_registrable<GridSample_Op>(m, pyClassName); declare_registrable<GridSample_Op>(m, pyClassName);
......
...@@ -22,7 +22,8 @@ void init_Identity(py::module& m) { ...@@ -22,7 +22,8 @@ void init_Identity(py::module& m) {
py::class_<Identity_Op, std::shared_ptr<Identity_Op>, OperatorTensor>(m, "IdentityOp", py::multiple_inheritance()) py::class_<Identity_Op, std::shared_ptr<Identity_Op>, OperatorTensor>(m, "IdentityOp", py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &Identity_Op::getInputsName) .def_static("get_inputs_name", &Identity_Op::getInputsName)
.def_static("get_outputs_name", &Identity_Op::getOutputsName); .def_static("get_outputs_name", &Identity_Op::getOutputsName)
.def_readonly_static("Type", &Identity_Op::Type);
m.def("Identity", &Identity, py::arg("name") = ""); m.def("Identity", &Identity, py::arg("name") = "");
} }
......
...@@ -22,7 +22,8 @@ void init_LeakyReLU(py::module& m) { ...@@ -22,7 +22,8 @@ void init_LeakyReLU(py::module& m) {
py::class_<LeakyReLU_Op, std::shared_ptr<LeakyReLU_Op>, OperatorTensor>(m, "LeakyReLUOp", py::multiple_inheritance()) py::class_<LeakyReLU_Op, std::shared_ptr<LeakyReLU_Op>, OperatorTensor>(m, "LeakyReLUOp", py::multiple_inheritance())
.def(py::init<float>(), py::arg("negative_slope")) .def(py::init<float>(), py::arg("negative_slope"))
.def_static("get_inputs_name", &LeakyReLU_Op::getInputsName) .def_static("get_inputs_name", &LeakyReLU_Op::getInputsName)
.def_static("get_outputs_name", &LeakyReLU_Op::getOutputsName); .def_static("get_outputs_name", &LeakyReLU_Op::getOutputsName)
.def_readonly_static("Type", &LeakyReLU_Op::Type);
declare_registrable<LeakyReLU_Op>(m, "LeakyReLUOp"); declare_registrable<LeakyReLU_Op>(m, "LeakyReLUOp");
m.def("LeakyReLU", &LeakyReLU, py::arg("negative_slope") = 0.0f, py::arg("name") = ""); m.def("LeakyReLU", &LeakyReLU, py::arg("negative_slope") = 0.0f, py::arg("name") = "");
} }
......
...@@ -22,7 +22,8 @@ void init_Ln(py::module& m) { ...@@ -22,7 +22,8 @@ void init_Ln(py::module& m) {
py::class_<Ln_Op, std::shared_ptr<Ln_Op>, OperatorTensor>(m, "LnOp", py::multiple_inheritance()) py::class_<Ln_Op, std::shared_ptr<Ln_Op>, OperatorTensor>(m, "LnOp", py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &Ln_Op::getInputsName) .def_static("get_inputs_name", &Ln_Op::getInputsName)
.def_static("get_outputs_name", &Ln_Op::getOutputsName); .def_static("get_outputs_name", &Ln_Op::getOutputsName)
.def_readonly_static("Type", &Ln_Op::Type);
m.def("Ln", &Ln, py::arg("name") = ""); m.def("Ln", &Ln, py::arg("name") = "");
} }
......
...@@ -24,7 +24,8 @@ void init_MatMul(py::module &m) { ...@@ -24,7 +24,8 @@ void init_MatMul(py::module &m) {
py::class_<MatMul_Op, std::shared_ptr<MatMul_Op>, OperatorTensor>(m, "MatMulOp", py::multiple_inheritance()) py::class_<MatMul_Op, std::shared_ptr<MatMul_Op>, OperatorTensor>(m, "MatMulOp", py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &MatMul_Op::getInputsName) .def_static("get_inputs_name", &MatMul_Op::getInputsName)
.def_static("get_outputs_name", &MatMul_Op::getOutputsName); .def_static("get_outputs_name", &MatMul_Op::getOutputsName)
.def_readonly_static("Type", &MatMul_Op::Type);
declare_registrable<MatMul_Op>(m, "MatMulOp"); declare_registrable<MatMul_Op>(m, "MatMulOp");
m.def("MatMul", &MatMul, py::arg("name") = ""); m.def("MatMul", &MatMul, py::arg("name") = "");
} }
......
...@@ -37,7 +37,8 @@ template <DimIdx_t DIM> void declare_MaxPoolingOp(py::module &m) { ...@@ -37,7 +37,8 @@ template <DimIdx_t DIM> void declare_MaxPoolingOp(py::module &m) {
py::arg("stride_dims"), py::arg("stride_dims"),
py::arg("ceil_mode")) py::arg("ceil_mode"))
.def_static("get_inputs_name", &MaxPooling_Op<DIM>::getInputsName) .def_static("get_inputs_name", &MaxPooling_Op<DIM>::getInputsName)
.def_static("get_outputs_name", &MaxPooling_Op<DIM>::getOutputsName); .def_static("get_outputs_name", &MaxPooling_Op<DIM>::getOutputsName)
.def_readonly_static("Type", &MaxPooling_Op<DIM>::Type);
declare_registrable<MaxPooling_Op<DIM>>(m, pyClassName); declare_registrable<MaxPooling_Op<DIM>>(m, pyClassName);
m.def(("MaxPooling" + std::to_string(DIM) + "D").c_str(), [](const std::vector<DimSize_t>& kernel_dims, m.def(("MaxPooling" + std::to_string(DIM) + "D").c_str(), [](const std::vector<DimSize_t>& kernel_dims,
const std::string& name, const std::string& name,
......
...@@ -22,7 +22,8 @@ void init_Mul(py::module& m) { ...@@ -22,7 +22,8 @@ void init_Mul(py::module& m) {
py::class_<Mul_Op, std::shared_ptr<Mul_Op>, OperatorTensor>(m, "MulOp", py::multiple_inheritance()) py::class_<Mul_Op, std::shared_ptr<Mul_Op>, OperatorTensor>(m, "MulOp", py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &Mul_Op::getInputsName) .def_static("get_inputs_name", &Mul_Op::getInputsName)
.def_static("get_outputs_name", &Mul_Op::getOutputsName); .def_static("get_outputs_name", &Mul_Op::getOutputsName)
.def_readonly_static("Type", &Mul_Op::Type);
declare_registrable<Mul_Op>(m, "MulOp"); declare_registrable<Mul_Op>(m, "MulOp");
m.def("Mul", &Mul, py::arg("name") = ""); m.def("Mul", &Mul, py::arg("name") = "");
} }
......
...@@ -37,6 +37,7 @@ template <DimIdx_t DIM> void declare_PadOp(py::module &m) { ...@@ -37,6 +37,7 @@ template <DimIdx_t DIM> void declare_PadOp(py::module &m) {
py::arg("borderValue") = 0.0) py::arg("borderValue") = 0.0)
.def_static("get_inputs_name", &Pad_Op<DIM>::getInputsName) .def_static("get_inputs_name", &Pad_Op<DIM>::getInputsName)
.def_static("get_outputs_name", &Pad_Op<DIM>::getOutputsName) .def_static("get_outputs_name", &Pad_Op<DIM>::getOutputsName)
.def_readonly_static("Type", &Pad_Op<DIM>::Type)
; ;
declare_registrable<Pad_Op<DIM>>(m, pyClassName); declare_registrable<Pad_Op<DIM>>(m, pyClassName);
m.def(("Pad" + std::to_string(DIM) + "D").c_str(), [](const std::vector<DimSize_t>& beginEndTuples, m.def(("Pad" + std::to_string(DIM) + "D").c_str(), [](const std::vector<DimSize_t>& beginEndTuples,
......
...@@ -22,7 +22,8 @@ void init_Pop(py::module& m) { ...@@ -22,7 +22,8 @@ void init_Pop(py::module& m) {
py::class_<Pop_Op, std::shared_ptr<Pop_Op>, OperatorTensor>(m, "PopOp", py::multiple_inheritance()) py::class_<Pop_Op, std::shared_ptr<Pop_Op>, OperatorTensor>(m, "PopOp", py::multiple_inheritance())
.def(py::init<>()) .def(py::init<>())
.def_static("get_inputs_name", &Pop_Op::getInputsName) .def_static("get_inputs_name", &Pop_Op::getInputsName)
.def_static("get_outputs_name", &Pop_Op::getOutputsName); .def_static("get_outputs_name", &Pop_Op::getOutputsName)
.def_readonly_static("Type", &Pop_Op::Type);
m.def("Pop", &Pop, py::arg("name") = ""); m.def("Pop", &Pop, py::arg("name") = "");
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment