code: def _zip_infshape_dict(base_shapes, shapes):
      """make a dict of `InfShape` from two dicts of shapes.
      Inputs:
          base_shapes: dict of base shapes or InfShape objects
          shapes: dict of shapes
      Output:
          dict of `InfShape` using `zip_infshape`
      """
      base_shapes, shapes = _dataparallel_hack(base_shapes, shapes)
      basenames = set(base_shapes.keys())
      names = set(shapes.keys())
      assert basenames == names, (
          f"`base_shapes` has extra names {basenames - names}. "
          f"`shapes` has extra names {names - basenames}."
      )
      infshapes = {}
      for name, bsh in base_shapes.items():
          infshapes[name] = zip_infshape(bsh, shapes[name])
      return infshapes
  
file_path: NeMo/nemo/collections/nlp/modules/common/megatron/mup/shape.py
imports: from copy import deepcopy
  import yaml
  from torch import nn
  from torch.nn import Linear
  from torch.nn.modules.conv import _ConvNd
  from nemo.collections.nlp.modules.common.megatron.mup.infshape import InfShape, zip_infshape
  from nemo.collections.nlp.modules.common.megatron.mup.layer import MuReadout, rescale_linear_bias
label_desc: Use image node_id 7 for calling a global function with example usage: _zip_infshape_dict(base_shapes, shapes) and returns: infshapes