class_docstr: A set of potential optimizations which should be applied in an arbitrary
  order until equilibrium is reached.
  
  Canonicalize, Stabilize, and Specialize are all equilibrium optimizations.
  
  Parameters
  ----------
  ignore_newtrees
      If False, we will apply local opt on new node introduced during local
      optimization application. This could result in less fgraph iterations,
      but this doesn't mean it will be faster globally.
  
  tracks_on_change_inputs
      If True, we will re-apply local opt on nodes whose inputs
      changed during local optimization application. This could
      result in less fgraph iterations, but this doesn't mean it
      will be faster globally.
  
  Notes
  -----
  We can put LocalOptimizer and Optimizer as EquilibriumOptimizer
  suppor both.
  
  It is probably not a good idea to have ignore_newtrees=False and
  tracks_on_change_inputs=True
class_docstr_tok: ["A","set","of","potential","optimizations","which","should","be","applied","in","an","arbitrary","order","until","equilibrium","is","reached",".","Canonicalize",",","Stabilize",",","and","Specialize","are","all","equilibrium","optimizations",".","Parameters","--","--","--","--","--","ignore_newtrees","If","False",",","we","will","apply","local","opt","on","new","node","introduced","during","local","optimization","application",".","This","could","result","in","less","fgraph","iterations",",","but","this","does","n't","mean","it","will","be","faster","globally",".","tracks_on_change_inputs","If","True",",","we","will","re-apply","local","opt","on","nodes","whose","inputs","changed","during","local","optimization","application",".","This","could","result","in","less","fgraph","iterations",",","but","this","does","n't","mean","it","will","be","faster","globally",".","Notes","--","--","-","We","can","put","LocalOptimizer","and","Optimizer","as","EquilibriumOptimizer","suppor","both",".","It","is","probably","not","a","good","idea","to","have","ignore_newtrees=False","and","tracks_on_change_inputs=True"]
code: def query(self, *tags, **kwtags):
      _opts = super(EquilibriumDB, self).query(*tags, **kwtags)
      final_opts = [
          o for o in _opts if self.__final__.get(o.name, False)
      ]
      cleanup_opts = [
          o for o in _opts if self.__cleanup__.get(o.name, False)
      ]
      opts = [
          o
          for o in _opts
          if o not in final_opts and o not in cleanup_opts
      ]
      if len(final_opts) == 0:
          final_opts = None
      if len(cleanup_opts) == 0:
          cleanup_opts = None
      return opt.EquilibriumOptimizer(
          opts,
          max_use_ratio=config.optdb.max_use_ratio,
          ignore_newtrees=self.ignore_newtrees,
          tracks_on_change_inputs=self.tracks_on_change_inputs,
          failure_callback=opt.NavigatorOptimizer.warn_inplace,
          final_optimizers=final_opts,
          cleanup_optimizers=cleanup_opts,
      )
  
imports: from __future__ import absolute_import, print_function, division
  import copy
  import sys
  from theano.compat import DefaultOrderedDict
  from theano.misc.ordered_set import OrderedSet
  from six import StringIO, integer_types
  from theano.gof import opt
  from theano import config
label_desc: Use image node_id 3 for calling the EquilibriumDB obj's underlying member method code with example usage: obj.query() and returns: opt