diff --git a/aidge_export_cpp/operators.py b/aidge_export_cpp/operators.py index 398f4d8cde6b4ded64be24d6c94dadbf13e6ba81..3f26a72588f063a91a9ec3d715eaea3a37614068 100644 --- a/aidge_export_cpp/operators.py +++ b/aidge_export_cpp/operators.py @@ -61,8 +61,8 @@ def export_params(name: str, @operator_register(ExportLibCpp, "Producer") class ProducerCPP(ExportNode): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) self.values = np.array(self.operator.get_output(0)) if len(self.values.shape) == 4: # Note: export in HWC @@ -70,11 +70,11 @@ class ProducerCPP(ExportNode): def export(self, export_folder: Path, list_configs: list): - list_configs.append(f"parameters/{self.attributes['name']}.h") + list_configs.append(f"include/parameters/{self.attributes['name']}.h") export_params( self.attributes['out_name'][0], self.values.reshape(-1), - str(export_folder / "parameters" / f"{self.attributes['name']}.h")) + str(export_folder / "include" / "parameters" / f"{self.attributes['name']}.h")) return list_configs @@ -87,8 +87,8 @@ class ProducerCPP(ExportNode): @operator_register(ExportLibCpp, "ReLU") class ReLUCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) self.attributes["activation"] = "Rectifier" self.attributes["rescaling"] = "NoScaling" self.config_template = str( @@ -106,8 +106,8 @@ class ReLUCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "Conv") class ConvCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) # No padding with Conv # Use PaddedConv to add padding attribute self.attributes["padding"] = [0, 0] @@ -131,8 +131,8 @@ class ConvCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "PaddedConv") class PaddedConvCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) # TODO find a way to retrive attr for meta op for n in self.operator.get_micro_graph().get_nodes(): if n.type() == "Pad": @@ -163,8 +163,8 @@ class PaddedConvCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "Add") class AddCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) self.attributes["elemwise_op"] = "Add" self.attributes["activation"] = "Linear" self.attributes["rescaling"] = "NoScaling" @@ -183,8 +183,8 @@ class AddCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "Sub") class SubCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) self.attributes["elemwise_op"] = "Sub" self.attributes["activation"] = "Linear" self.attributes["rescaling"] = "NoScaling" @@ -204,8 +204,8 @@ class SubCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "Mul") class MulCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) self.attributes["elemwise_op"] = "Mul" self.attributes["activation"] = "Linear" self.attributes["rescaling"] = "NoScaling" @@ -224,8 +224,8 @@ class MulCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "MaxPooling") class MaxPoolCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) # No padding with MaxPooling # Use PaddedMaxPooling to add padding attribute @@ -249,8 +249,8 @@ class MaxPoolCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "PaddedMaxPooling") class PaddedMaxPoolCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) for n in self.operator.get_micro_graph().get_nodes(): if n.type() == "Pad": self.attributes["padding"] = n.get_operator( @@ -278,8 +278,8 @@ class PaddedMaxPoolCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "GlobalAveragePooling") class GlobalAveragePoolCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) self.attributes["stride_dims"] = [1, 1] # No padding with MaxPooling @@ -307,8 +307,8 @@ class GlobalAveragePoolCPP(ExportNodeCpp): @operator_register(ExportLibCpp, "FC") class FcCPP(ExportNodeCpp): - def __init__(self, node, mem_info): - super().__init__(node, mem_info) + def __init__(self, node, mem_info, is_input, is_output): + super().__init__(node, mem_info, is_input, is_output) self.attributes["activation"] = "Linear" self.attributes["rescaling"] = "NoScaling" self.config_template = str(