code: def build_perception_dict():
      """helper function"""
      in_dict = build_multi_input_dict(dims=[[100, 1, 16], [100, 1, 8]])
  
      perception_dict = dict()
      for in_key, in_tensor in in_dict.items():
          # compile network block
          net = DenseBlock(
              in_keys=in_key,
              out_keys=f"{in_key}_feat",
              in_shapes=[in_tensor.shape[-1:]],
              hidden_units=[32, 32],
              non_lin=nn.ReLU,
          )
          perception_dict[f"{in_key}_feat"] = net
  
      net = ConcatenationBlock(
          in_keys=list(perception_dict.keys()),
          out_keys="concat",
          in_shapes=[(32,), (32,)],
          concat_dim=-1,
      )
      perception_dict["concat"] = net
  
      return in_dict, perception_dict
  
file_path: maze/maze/test/perception/blocks/test_inference.py
imports: import glob
  from torch import nn
  from maze.perception.blocks.feed_forward.dense import DenseBlock
  from maze.perception.blocks.general.concat import ConcatenationBlock
  from maze.perception.blocks.inference import InferenceBlock, InferenceGraph
  from maze.test.perception.perception_test_utils import build_multi_input_dict
label_desc: Use image node_id 1 for calling a global function with example usage: build_perception_dict() and returns: in_dict,  perception_dict