class_docstr: Wrapper runtime module.
  
  This is a thin wrapper of the underlying TVM module.
  you can also directly call set_input, run, and get_output
  of underlying module functions
  
  Parameters
  ----------
  module : tvm.runtime.Module
      The internal tvm module that holds the actual graph functions.
  
  Attributes
  ----------
  module : tvm.runtime.Module
      The internal tvm module that holds the actual graph functions.
  
  Examples
  --------
  
  .. code-block:: python
  
      import tvm
      from tvm import relay
      from tvm.contrib import graph_executor
  
      # build the library using graph executor
      lib = relay.build(...)
      lib.export_library("compiled_lib.so")
      # load it back as a runtime
      lib: tvm.runtime.Module = tvm.runtime.load_module("compiled_lib.so")
      # Call the library factory function for default and create
      # a new runtime.Module, wrap with graph module.
      gmod = graph_executor.GraphModule(lib["default"](dev))
      # use the graph module.
      gmod.set_input("x", data)
      gmod.run()
class_docstr_tok: ["Wrapper","runtime","module",".","This","is","a","thin","wrapper","of","the","underlying","TVM","module",".","you","can","also","directly","call","set_input",",","run",",","and","get_output","of","underlying","module","functions","Parameters","--","--","--","--","--","module",":","tvm.runtime.Module","The","internal","tvm","module","that","holds","the","actual","graph","functions",".","Attributes","--","--","--","--","--","module",":","tvm.runtime.Module","The","internal","tvm","module","that","holds","the","actual","graph","functions",".","Examples","--","--","--","--","..","code-block",":",":","python","import","tvm","from","tvm","import","relay","from","tvm.contrib","import","graph_executor","#","build","the","library","using","graph","executor","lib","=","relay.build","(","...",")","lib.export_library","(","``","compiled_lib.so","''",")","#","load","it","back","as","a","runtime","lib",":","tvm.runtime.Module","=","tvm.runtime.load_module","(","``","compiled_lib.so","''",")","#","Call","the","library","factory","function","for","default","and","create","#","a","new","runtime.Module",",","wrap","with","graph","module",".","gmod","=","graph_executor.GraphModule","(","lib","[","``","default","''","]","(","dev",")",")","#","use","the","graph","module",".","gmod.set_input","(","``","x","''",",","data",")","gmod.run","(",")"]
docstr: Return the 'shape' and 'dtype' dictionaries of the graph.
  
  .. note::
      We can't simply get the input tensors from a TVM graph
      because weight tensors are treated equivalently. Therefore, to
      find the input tensors we look at the 'arg_nodes' in the graph
      (which are either weights or inputs) and check which ones don't
      appear in the params (where the weights are stored). These nodes
      are therefore inferred to be input tensors.
  
  Returns
  -------
  shape_dict : Map
      Shape dictionary - {input_name: tuple}.
  dtype_dict : Map
      dtype dictionary - {input_name: dtype}.
docstr_tok: ["Return","the","'shape","'","and","'dtype","'","dictionaries","of","the","graph",".","..","note",":",":","We","ca","n't","simply","get","the","input","tensors","from","a","TVM","graph","because","weight","tensors","are","treated","equivalently",".","Therefore",",","to","find","the","input","tensors","we","look","at","the","'arg_nodes","'","in","the","graph","(","which","are","either","weights","or","inputs",")","and","check","which","ones","don't","appear","in","the","params","(","where","the","weights","are","stored",")",".","These","nodes","are","therefore","inferred","to","be","input","tensors",".","Returns","--","--","--","-","shape_dict",":","Map","Shape","dictionary","-","{","input_name",":","tuple","}",".","dtype_dict",":","Map","dtype","dictionary","-","{","input_name",":","dtype","}","."]
code: def get_input_info(self):
      """Return the 'shape' and 'dtype' dictionaries of the graph.
  
      .. note::
          We can't simply get the input tensors from a TVM graph
          because weight tensors are treated equivalently. Therefore, to
          find the input tensors we look at the 'arg_nodes' in the graph
          (which are either weights or inputs) and check which ones don't
          appear in the params (where the weights are stored). These nodes
          are therefore inferred to be input tensors.
  
      Returns
      -------
      shape_dict : Map
          Shape dictionary - {input_name: tuple}.
      dtype_dict : Map
          dtype dictionary - {input_name: dtype}.
      """
      input_info = self._get_input_info()
      assert "shape" in input_info
      shape_dict = input_info["shape"]
      assert "dtype" in input_info
      dtype_dict = input_info["dtype"]
  
      return shape_dict, dtype_dict
  
imports: import numpy
  import tvm._ffi
  from tvm.rpc import _ffi_api
  from tvm.rpc import base
  from tvm._ffi.base import string_types
  from tvm._ffi.runtime_ctypes import Device
label_desc: Use image node_id 10 for calling the GraphModule obj's underlying member method code with example usage: obj.get_input_info() and returns: shape_dict,  dtype_dict