class_docstr: An input filter is a module that filters the input from an environment to the agent.
class_docstr_tok: ["An","input","filter","is","a","module","that","filters","the","input","from","an","environment","to","the","agent","."]
code: def __init__(
      self,
      observation_filters: Dict[
          str, Dict[str, "ObservationFilter"]
      ] = None,
      reward_filters: Dict[str, "RewardFilter"] = None,
      is_a_reference_filter: bool = False,
      name=None,
  ):
      super().__init__(name)
      if observation_filters is None:
          observation_filters = {}
      if reward_filters is None:
          reward_filters = OrderedDict([])
      self._observation_filters = observation_filters
      self._reward_filters = reward_filters
  
      # We do not want to allow reference filters such as Atari to be used directly. These have to be duplicated first
      # and only then can change their values so to keep their original params intact for other agents in the graph.
      self.i_am_a_reference_filter = is_a_reference_filter
  
imports: import copy
  import os
  from collections import OrderedDict
  from copy import deepcopy
  from typing import Dict, Union, List
  from rl_coach.core_types import EnvResponse, ActionInfo, Transition
  from rl_coach.spaces import ActionSpace, RewardSpace, ObservationSpace
  from rl_coach.utils import force_list
label_desc: Use image node_id 1 to create a new InputFilter object from inherited base classes: Filter with example: obj = InputFilter(observation_filters, reward_filters, is_a_reference_filter, name)