class_docstr: A tuple of `InfDim`s.
  
  This is intended to be attached to each parameter tensor `p` as `p.infshape`.
code: def __init__(self, *args, **kwargs):
      tuple.__init__(*args, **kwargs)
      for dim in self:
          if not isinstance(dim, InfDim):
              raise ValueError(
                  "Elements of InfShape needs to be of class InfDim"
              )
      # set main to be the last dimension that is infinite
      # for inf x inf this is fanin
      # for inf x fin or fin x inf it's the unique inf dim
      # user can set this manually if necessary
      self.main_idx = self.main = None
      for i, dim in list(enumerate(self))[::-1]:
          if dim.isinf():
              self.main_idx = i
              self.main = dim
              break
  
imports: from copy import copy
label_desc: Use image node_id 1 to create a new InfShape object from inherited base classes: tuple with example: obj = InfShape()