def __init__(self, complex_model: Type[Model], capacity_equivalent: bool=True, equiv_technique: str='ratio'):
    "\n        :param complex_model: Complex keras model (ex: sequential)\n        :param capacity_equivalent: An equivalent model can be equivalent in terms of layer neurons or\n                        trainable parameters (capacity equivalent according to: https://arxiv.org/abs/1811.12351)\n            - True, it creates a capacity-equivalent model in terms of trainable parameters\n            - False, it will double all layer size (except the last one if classifier=True)\n        :param equiv_technique: Used to define the strategy of the capacity equivalent model.\n            This parameter is ignored if capacity_equivalent=False\n            - 'ratio': neurons_real_valued_layer[i] = r * neurons_complex_valued_layer[i], 'r' constant for all 'i'\n            - 'alternate': Method described in https://arxiv.org/abs/1811.12351 where one alternates between\n                    multiplying by 2 or 1. Special case on the middle is treated as a compromise between the two.\n        "
    super().__init__()
    self.add_model(complex_model)
    self.add_model(get_real_equivalent(complex_model, capacity_equivalent=capacity_equivalent, equiv_technique=equiv_technique, name='real_network'))
:param complex_model: Complex keras model (ex: sequential)
:param capacity_equivalent: An equivalent model can be equivalent in terms of layer neurons or
                trainable parameters (capacity equivalent according to: https://arxiv.org/abs/1811.12351)
    - True, it creates a capacity-equivalent model in terms of trainable parameters
    - False, it will double all layer size (except the last one if classifier=True)
:param equiv_technique: Used to define the strategy of the capacity equivalent model.
    This parameter is ignored if capacity_equivalent=False
    - 'ratio': neurons_real_valued_layer[i] = r * neurons_complex_valued_layer[i], 'r' constant for all 'i'
    - 'alternate': Method described in https://arxiv.org/abs/1811.12351 where one alternates between
            multiplying by 2 or 1. Special case on the middle is treated as a compromise between the two.
def __init__(self, complex_model: Type[Model], capacity_equivalent: bool=True, equiv_technique: str='ratio'):
    "\n        :param complex_model: Complex keras model (ex: sequential)\n        :param capacity_equivalent: An equivalent model can be equivalent in terms of layer neurons or\n                        trainable parameters (capacity equivalent according to: https://arxiv.org/abs/1811.12351)\n            - True, it creates a capacity-equivalent model in terms of trainable parameters\n            - False, it will double all layer size (except the last one if classifier=True)\n        :param equiv_technique: Used to define the strategy of the capacity equivalent model.\n            This parameter is ignored if capacity_equivalent=False\n            - 'ratio': neurons_real_valued_layer[i] = r * neurons_complex_valued_layer[i], 'r' constant for all 'i'\n            - 'alternate': Method described in https://arxiv.org/abs/1811.12351 where one alternates between\n                    multiplying by 2 or 1. Special case on the middle is treated as a compromise between the two.\n        "
    super().__init__()
    self.add_model(complex_model)
    self.add_model(get_real_equivalent(complex_model, capacity_equivalent=capacity_equivalent, equiv_technique=equiv_technique, name='real_network'))