class_docstr: An output filter is a module that filters the output from an agent to the environment.
class_docstr_tok: ["An","output","filter","is","a","module","that","filters","the","output","from","an","agent","to","the","environment","."]
code: def __init__(
      self,
      action_filters: OrderedDict([(str, "ActionFilter")]) = None,
      is_a_reference_filter: bool = False,
      name=None,
  ):
      super().__init__(name)
  
      if action_filters is None:
          action_filters = OrderedDict([])
      self._action_filters = action_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 OutputFilter object from inherited base classes: Filter with example: obj = OutputFilter(action_filters, is_a_reference_filter, name)