class_docstr: A combination for mixed complex & real representations.
docstr: Initialize the combination.
  
  .. note ::
      if non-instantiated combinations are passed, separate instances will be created for real and imaginary parts
  
  :param combination:
      the real combination, or a hint thereof
  :param combination_kwargs:
      keyword-based parameters for the real combination
  :param imag_combination:
      the imaginary combination, or a hint thereof. If None, use combination for both.
  :param imag_combination_kwargs:
      keyword-based parameters for the imaginary combination; only used if imag_combination is not None
docstr_tok: ["Initialize","the","combination",".","..","note",":",":","if","non-instantiated","combinations","are","passed",",","separate","instances","will","be","created","for","real","and","imaginary","parts",":","param","combination",":","the","real","combination",",","or","a","hint","thereof",":","param","combination_kwargs",":","keyword-based","parameters","for","the","real","combination",":","param","imag_combination",":","the","imaginary","combination",",","or","a","hint","thereof",".","If","None",",","use","combination","for","both",".",":","param","imag_combination_kwargs",":","keyword-based","parameters","for","the","imaginary","combination",";","only","used","if","imag_combination","is","not","None"]
code: def __init__(
      self,
      combination: HintOrType[Combination] = None,
      combination_kwargs: OptionalKwargs = None,
      imag_combination: HintOrType[Combination] = None,
      imag_combination_kwargs: OptionalKwargs = None,
  ):
      """
      Initialize the combination.
  
      .. note ::
          if non-instantiated combinations are passed, separate instances will be created for real and imaginary parts
  
      :param combination:
          the real combination, or a hint thereof
      :param combination_kwargs:
          keyword-based parameters for the real combination
      :param imag_combination:
          the imaginary combination, or a hint thereof. If None, use combination for both.
      :param imag_combination_kwargs:
          keyword-based parameters for the imaginary combination; only used if imag_combination is not None
      """
      super().__init__()
      # input normalization
      if imag_combination is None:
          imag_combination, imag_combination_kwargs = (
              combination,
              combination_kwargs,
          )
      # instantiate separate combinations
      self.real_combination = combination_resolver.make(
          combination, combination_kwargs
      )
      self.imag_combination = combination_resolver.make(
          imag_combination, imag_combination_kwargs
      )
  
imports: import logging
  from abc import ABC, abstractmethod
  from typing import Any, Callable, Iterable, Mapping, Optional, Sequence, Tuple
  import torch
  from class_resolver import ClassResolver, Hint, HintOrType, OptionalKwargs
  from class_resolver.contrib.torch import activation_resolver, aggregation_resolver
  from torch import nn
  from ..utils import ExtraReprMixin, combine_complex, split_complex
label_desc: Use image node_id 1 to create a new ComplexSeparatedCombination object from inherited base classes: Combination with example: obj = ComplexSeparatedCombination(combination, combination_kwargs, imag_combination, imag_combination_kwargs)