class_docstr: Defines a tree sub-graph pattern of Keras layers to match in a model.
  
  `LayerPattern` can be used to describe various common patterns in model
  graphs that we need to find.
  
  Examples:
    Matches a Conv+BN+ReLU6 and DepthwiseConv+BN+ReLU6 pattern.
    pattern = LayerPattern('ReLU', {'max_value': 6.0}, [
        LayerPattern('BatchNormalization', {}, [
            LayerPattern('Conv2D|DepthwiseConv2D', {} [])
        ])
    ])
  
    Matches multiple Conv2Ds feeding into a Concat.
    pattern = LayerPattern('Concat', {}, [
        LayerPattern('Conv2D', {}, []),
        LayerPattern('Conv2D', {}, [])
    ])
code: def __str__(self):
      return "{} : {} <- [{}]".format(
          self.class_name,
          self.config,
          ", ".join([str(inp) for inp in self.inputs]),
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import abc
  import collections
  import six
label_desc: Use image node_id 2 for calling the LayerPattern obj's underlying member method code with example usage: obj.__str__() and returns: str