class_docstr: Class for composing individual encoding stages.
  
  This class provides functionality for arbitrarily composing individual
  encoding stages (implementations of `EncodingStageInterface` or
  `AdaptiveEncodingStageInterface`) into a tree, where an output `Tensor` of an
  encoding stage can be further encoded by another encoding stage.
  
  The interface is similar to that of `AdaptiveEncodingStageInterface`, with the
  additional methods `decode_before_sum` and `decode_after_sum`. These methods
  split the decoding functionality to two parts, based on commutativity with
  summation.
  
  Similar to the `AdaptiveEncodingStageInterface`, the methods are designed to
  be functional transformations. That means, for instance, that the
  `initial_state` and `update_state` methods do not modify any underlying state.
  Rather, the user of the `Encoder` class is responsible for storing any values
  if necessary, and providing them back to appropriate methods of this class.
docstr: Represents the structure of the `Encoder` which commutes with sum.
  
  Returns:
    A dictionary with two keys: `EncoderKeys.COMMUTE` and
    `EncoderKeys.CHILDREN`. The `EncoderKeys.COMMUTE` key maps to `True` or
    `False`, based on whether the encoding stage controlled by this class
    comutes with sum. The `EncoderKeys.CHILDREN` key maps to a dictionary with
    the same keys as `self.children`, each of which maps to an object like
    this one, recursively.
docstr_tok: ["Represents","the","structure","of","the","`","Encoder","`","which","commutes","with","sum",".","Returns",":","A","dictionary","with","two","keys",":","`","EncoderKeys.COMMUTE","`","and","`","EncoderKeys.CHILDREN","`",".","The","`","EncoderKeys.COMMUTE","`","key","maps","to","`","True","`","or","`","False","`",",","based","on","whether","the","encoding","stage","controlled","by","this","class","comutes","with","sum",".","The","`","EncoderKeys.CHILDREN","`","key","maps","to","a","dictionary","with","the","same","keys","as","`","self.children","`",",","each","of","which","maps","to","an","object","like","this","one",",","recursively","."]
code: def commuting_structure(self):
      """Represents the structure of the `Encoder` which commutes with sum.
  
      Returns:
        A dictionary with two keys: `EncoderKeys.COMMUTE` and
        `EncoderKeys.CHILDREN`. The `EncoderKeys.COMMUTE` key maps to `True` or
        `False`, based on whether the encoding stage controlled by this class
        comutes with sum. The `EncoderKeys.CHILDREN` key maps to a dictionary with
        the same keys as `self.children`, each of which maps to an object like
        this one, recursively.
      """
      if not self._commuting_structure:
          self._commuting_structure = self._commuting_structure_impl(
              True
          )
      return self._commuting_structure
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import six
  import tensorflow
  from tensorflow_model_optimization.python.core.internal.tensor_encoding.core import encoding_stage
  from tensorflow_model_optimization.python.core.internal.tensor_encoding.utils import py_utils
label_desc: Use image node_id 3 for calling the Encoder obj's underlying member method code with example usage: obj.commuting_structure() and returns: self