class_docstr: A :class:`Transformer` executes an FX graph node-by-node, applies
  transformations to each node, and produces a new :class:`torch.nn.Module`.
  It exposes a :func:`transform` method that returns the transformed
  :class:`~torch.nn.Module`.
  :class:`Transformer` works entirely symbolically.
  
  Methods in the :class:`Transformer` class can be overriden to customize the
  behavior of transformation.
  
  .. code-block:: none
  
      transform()
          +-- Iterate over each node in the graph
              +-- placeholder()
              +-- get_attr()
              +-- call_function()
              +-- call_method()
              +-- call_module()
              +-- call_message_passing_module()
              +-- call_global_pooling_module()
              +-- output()
          +-- Erase unused nodes in the graph
          +-- Iterate over each children module
              +-- init_submodule()
  
  In contrast to the :class:`torch.fx.Transformer` class, the
  :class:`Transformer` exposes additional functionality:
  
  #. It subdivides :func:`call_module` into nodes that call a regular
     :class:`torch.nn.Module` (:func:`call_module`), a
     :class:`MessagePassing` module (:func:`call_message_passing_module`),
     or a :class:`GlobalPooling` module (:func:`call_global_pooling_module`).
  
  #. It allows to customize or initialize new children modules via
     :func:`init_submodule`
  
  #. It allows to infer whether a node returns node-level or edge-level
     information via :meth:`is_edge_level`.
  
  Args:
      module (torch.nn.Module): The module to be transformed.
      input_map (Dict[str, str], optional): A dictionary holding information
          about the type of input arguments of :obj:`module.forward`.
          For example, in case :obj:`arg` is a node-level argument, then
          :obj:`input_map['arg'] = 'node'`, and
          :obj:`input_map['arg'] = 'edge'` otherwise.
          In case :obj:`input_map` is not further specified, will try to
          automatically determine the correct type of input arguments.
          (default: :obj:`None`)
      debug (bool, optional): If set to :obj:`True`, will perform
          transformation in debug mode. (default: :obj:`False`)
class_docstr_tok: ["A",":","class",":","`","Transformer","`","executes","an","FX","graph","node-by-node",",","applies","transformations","to","each","node",",","and","produces","a","new",":","class",":","`","torch.nn.Module","`",".","It","exposes","a",":","func",":","`","transform","`","method","that","returns","the","transformed",":","class",":","`","~torch.nn.Module","`",".",":","class",":","`","Transformer","`","works","entirely","symbolically",".","Methods","in","the",":","class",":","`","Transformer","`","class","can","be","overriden","to","customize","the","behavior","of","transformation",".","..","code-block",":",":","none","transform","(",")","+","--","Iterate","over","each","node","in","the","graph","+","--","placeholder","(",")","+","--","get_attr","(",")","+","--","call_function","(",")","+","--","call_method","(",")","+","--","call_module","(",")","+","--","call_message_passing_module","(",")","+","--","call_global_pooling_module","(",")","+","--","output","(",")","+","--","Erase","unused","nodes","in","the","graph","+","--","Iterate","over","each","children","module","+","--","init_submodule","(",")","In","contrast","to","the",":","class",":","`","torch.fx.Transformer","`","class",",","the",":","class",":","`","Transformer","`","exposes","additional","functionality",":","#",".","It","subdivides",":","func",":","`","call_module","`","into","nodes","that","call","a","regular",":","class",":","`","torch.nn.Module","`","(",":","func",":","`","call_module","`",")",",","a",":","class",":","`","MessagePassing","`","module","(",":","func",":","`","call_message_passing_module","`",")",",","or","a",":","class",":","`","GlobalPooling","`","module","(",":","func",":","`","call_global_pooling_module","`",")",".","#",".","It","allows","to","customize","or","initialize","new","children","modules","via",":","func",":","`","init_submodule","`","#",".","It","allows","to","infer","whether","a","node","returns","node-level","or","edge-level","information","via",":","meth",":","`","is_edge_level","`",".","Args",":","module","(","torch.nn.Module",")",":","The","module","to","be","transformed",".","input_map","(","Dict","[","str",",","str","]",",","optional",")",":","A","dictionary","holding","information","about","the","type","of","input","arguments","of",":","obj",":","`","module.forward","`",".","For","example",",","in","case",":","obj",":","`","arg","`","is","a","node-level","argument",",","then",":","obj",":","`","input_map","[","'arg","'","]","=","'node","'","`",",","and",":","obj",":","`","input_map","[","'arg","'","]","=","'edge","'","`","otherwise",".","In","case",":","obj",":","`","input_map","`","is","not","further","specified",",","will","try","to","automatically","determine","the","correct","type","of","input","arguments",".","(","default",":",":","obj",":","`","None","`",")","debug","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","True","`",",","will","perform","transformation","in","debug","mode",".","(","default",":",":","obj",":","`","False","`",")"]
code: def call_function(self, node: Node, target: Any, name: str):
      pass
  
imports: import copy
  import warnings
  from typing import Any, Dict, Optional
  import torch
  from torch.nn import Module, ModuleDict, ModuleList, Sequential
label_desc: Use image node_id 8 for calling the Transformer obj's underlying member method code with example usage: obj.call_function(node, target, name) without return types