docs: def get_shape(pmaps):
      """
      :param pmaps: a set of homogenous ProbabilityMaps
      :returns: the common shape (N, L, I)
      """
      for pmap in pmaps:
          if pmap:
              sid = next(iter(pmap))
              break
      else:
          raise AllEmptyProbabilityMaps(pmaps)
      return (len(pmap),) + pmap[sid].array.shape