class_docstr: An object representing a range of shapes for a multiArray feature in a
  neural network. Valid shape ranges must have have only the Channel [C]
  range or the Channel, Height and Width [C, H, W] ranges populated. A "-1"
  value in an upper bound represents an unbounded range.
class_docstr_tok: ["An","object","representing","a","range","of","shapes","for","a","multiArray","feature","in","a","neural","network",".","Valid","shape","ranges","must","have","have","only","the","Channel","[","C","]","range","or","the","Channel",",","Height","and","Width","[","C",",","H",",","W","]","ranges","populated",".","A","``","-1","''","value","in","an","upper","bound","represents","an","unbounded","range","."]
code: def __init__(self, input_ranges=None):
      self.arrayShapeRange = {}
  
      if input_ranges:
          if not isinstance(input_ranges, dict):
              raise Exception(
                  "Attempting to initialize a shape range with something other than a dictionary of shapes."
              )
          self.arrayShapeRange = {}
          for key, value in input_ranges.items():
              if key in _CONSTRAINED_KEYS:
                  self.arrayShapeRange[key] = self._create_shape_range(
                      value
                  )
          self.validate_array_shape_range()
  
imports: from ..utils import _get_feature, _get_nn_layers, _get_input_names
  from ...None import _MINIMUM_FLEXIBLE_SHAPES_SPEC_VERSION
  from ...None import _MINIMUM_NDARRAY_SPEC_VERSION
label_desc: Use image node_id 1 to create a new NeuralNetworkMultiArrayShapeRange object  with example: obj = NeuralNetworkMultiArrayShapeRange(input_ranges)