class_docstr: **Base class for Variational Inference**
  
  Communicates Operator, Approximation and Test Function to build Objective Function
  
  Parameters
  ----------
  op : Operator class    #:class:`~pymc.variational.operators`
  approx : Approximation class or instance    #:class:`~pymc.variational.approximations`
  tf : TestFunction instance  #?
  model : Model
      PyMC Model
  kwargs : kwargs passed to :class:`Operator` #:class:`~pymc.variational.operators`, optional
code: def __init__(self, op, approx, tf, **kwargs):
      self.hist = np.asarray(())
      self.objective = op(approx, **kwargs)(tf)
      self.state = None
  
imports: import collections
  import logging
  import warnings
  import numpy
  from fastprogress.fastprogress import progress_bar
  import pymc
  from pymc.variational import test_functions
  from pymc.variational.approximations import Empirical, FullRank, MeanField
  from pymc.variational.operators import KL, KSD
label_desc: Use image node_id 1 to create a new Inference object  with example: obj = Inference(op, approx, tf)