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 validate_array_shape_range(self):
      num_dims = self.get_shape_range_dims()
      if num_dims != 1 and num_dims != 3:
          raise Exception(
              "For neural networks, shape must be of length 1 or 3"
              ", representing input shape [C] or [C,H,W], respectively"
          )
  
      if num_dims == 1:
          if _CHANNEL_KEY not in self.arrayShapeRange.keys():
              raise Exception("Channel Shape Range not specified")
  
      if num_dims == 3:
          if (
              _CHANNEL_KEY not in self.arrayShapeRange.keys()
              or _HEIGHT_KEY not in self.arrayShapeRange.keys()
              or _WIDTH_KEY not in self.arrayShapeRange.keys()
          ):
              raise Exception(
                  "Shape range constraint missing for either channel, height, or width."
              )
  
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 7 for calling the NeuralNetworkMultiArrayShapeRange obj's underlying member method code with example usage: obj.validate_array_shape_range() without return types