class_docstr: Class that satisfies the Linker interface by acting as a VM factory.
  
  Parameters
  ----------
  allow_gc
      Force the virtual machine to clean up unnecessary
      references, in order to allow garbage collection on
      intermediate values during computation of a function.
      If None use as default the value of the Theano flag allow_gc.
  use_cloop
      Use the C-based virtual machine if possible
  callback
      A callable object to call after each call to a thunk within
      the virtual machine.  It will be called with four arguments called
      'node', 'thunk', 'storage_map', and 'compute_map'.
  callback_input
      A callable object to call on each input to the graph
      (variables with no owner).  This includes constants and shared
      variables values.  It will be called with two arguments:
      'var', 'value'.
  lazy
      Useful only when use_cloop is False. When lazy is None, use the
      theano flag vm.lazy value. Then if we have a None (default) we auto
      detect if lazy evaluation is needed and use the appropriate
      version. If lazy is True or False, we force the version used
      between Loop/LoopGC and Stack.
  c_thunks
      If None or True, don't change the default. If False,
      don't compile c code for the thunks.
  allow_partial_eval
      If True, enforces usage of Stack or CVM, to allow for partial
      evaluation of functions (calculating a subset of outputs).
class_docstr_tok: ["Class","that","satisfies","the","Linker","interface","by","acting","as","a","VM","factory",".","Parameters","--","--","--","--","--","allow_gc","Force","the","virtual","machine","to","clean","up","unnecessary","references",",","in","order","to","allow","garbage","collection","on","intermediate","values","during","computation","of","a","function",".","If","None","use","as","default","the","value","of","the","Theano","flag","allow_gc",".","use_cloop","Use","the","C-based","virtual","machine","if","possible","callback","A","callable","object","to","call","after","each","call","to","a","thunk","within","the","virtual","machine",".","It","will","be","called","with","four","arguments","called","'node","'",",","'thunk","'",",","'storage_map","'",",","and","'compute_map","'",".","callback_input","A","callable","object","to","call","on","each","input","to","the","graph","(","variables","with","no","owner",")",".","This","includes","constants","and","shared","variables","values",".","It","will","be","called","with","two","arguments",":","'var","'",",","'value","'",".","lazy","Useful","only","when","use_cloop","is","False",".","When","lazy","is","None",",","use","the","theano","flag","vm.lazy","value",".","Then","if","we","have","a","None","(","default",")","we","auto","detect","if","lazy","evaluation","is","needed","and","use","the","appropriate","version",".","If","lazy","is","True","or","False",",","we","force","the","version","used","between","Loop\/LoopGC","and","Stack",".","c_thunks","If","None","or","True",",","do","n't","change","the","default",".","If","False",",","do","n't","compile","c","code","for","the","thunks",".","allow_partial_eval","If","True",",","enforces","usage","of","Stack","or","CVM",",","to","allow","for","partial","evaluation","of","functions","(","calculating","a","subset","of","outputs",")","."]
code: def __init__(
      self,
      allow_gc=None,
      use_cloop=False,
      callback=None,
      callback_input=None,
      lazy=None,
      schedule=None,
      c_thunks=None,
      allow_partial_eval=None,
  ):
      # Note: if more parameters are added to __init__, make sure to forward
      # them in the "type(self)(...)" call in the "accept" method below.
      if allow_gc is None:
          allow_gc = config.allow_gc
      self.fgraph = None
      self.allow_gc = allow_gc
      self.use_cloop = use_cloop
      self.callback = callback
      self.callback_input = callback_input
      self.lazy = lazy
      if c_thunks is None:
          c_thunks = bool(theano.config.cxx)
      self.c_thunks = c_thunks
      self.allow_partial_eval = allow_partial_eval
      self.updated_vars = {}
      if schedule:
          self.schedule = schedule
  
imports: from __future__ import absolute_import, print_function, division
  from .None import link
  from collections import defaultdict
  import logging
  import sys
  import time
  import warnings
  import platform
  from theano.configparser import config, _config_var_list
  import theano.gof.cmodule
  from six import iteritems, itervalues
  from six.moves import xrange
label_desc: Use image node_id 1 to create a new VM_Linker object from inherited base classes: link with example: obj = VM_Linker(allow_gc, use_cloop, callback, callback_input, lazy, schedule, c_thunks, allow_partial_eval)