class_docstr: Interface for all perception blocks.
  Perception blocks provide a mapping of M input tensors to N output tensors.
  Both input and output tensors are stored in a dictionary with unique keys.
  
  :param in_keys: Keys identifying the input tensors.
  :param out_keys: Keys identifying the output tensors.
  :param in_shapes: List of input shapes.
class_docstr_tok: ["Interface","for","all","perception","blocks",".","Perception","blocks","provide","a","mapping","of","M","input","tensors","to","N","output","tensors",".","Both","input","and","output","tensors","are","stored","in","a","dictionary","with","unique","keys",".",":","param","in_keys",":","Keys","identifying","the","input","tensors",".",":","param","out_keys",":","Keys","identifying","the","output","tensors",".",":","param","in_shapes",":","List","of","input","shapes","."]
docstr: Factory for creating a dummy tensor creator function (necessary to circumvent early binding)
  
  :param in_shape: The in_shape we want to create a tensor for
  :return: A functional taking no arguments returning a tensor
docstr_tok: ["Factory","for","creating","a","dummy","tensor","creator","function","(","necessary","to","circumvent","early","binding",")",":","param","in_shape",":","The","in_shape","we","want","to","create","a","tensor","for",":","return",":","A","functional","taking","no","arguments","returning","a","tensor"]
code: def _default_dummy_creator_factory(
      cls, in_shape: Sequence[int]
  ) -> Callable[[], torch.Tensor]:
      """Factory for creating a dummy tensor creator function (necessary to circumvent early binding)
  
      :param in_shape: The in_shape we want to create a tensor for
      :return: A functional taking no arguments returning a tensor
      """
  
      def default_dummy_creator() -> torch.Tensor:
          """The default dummy dict creator returns a torch tensor with the in_shape of the corresponding input in
          addition to one more dimension for the batch size
  
          :return: A random tensor with shape corresponding to the input
          """
          return torch.from_numpy(
              np.random.randn(*([1] + list(in_shape))).astype(
                  np.float32
              )
          )
  
      return default_dummy_creator
  
file_path: maze/maze/perception/blocks/base.py
imports: from abc import ABC, abstractmethod
  from typing import Dict, Union, List, Sequence, Callable
  import numpy
  import torch
  from torch import nn
label_desc: Use image node_id 2 for calling the PerceptionBlock obj's underlying member method code with example usage: obj._default_dummy_creator_factory(cls, in_shape) and returns: default_dummy_creator, torch