class_docstr: **Implicit Gradient for Variational Inference**
  
  **not suggested to use**
  
  An approach to fit arbitrary approximation by computing kernel based gradient
  By default RBF kernel is used for gradient estimation. Default estimator is
  Kernelized Stein Discrepancy with temperature equal to 1. This temperature works
  only for large number of samples. Larger temperature is needed for small number of
  samples but there is no theoretical approach to choose the best one in such case.
code: def __init__(
      self, approx, estimator=KSD, kernel=test_functions.rbf, **kwargs
  ):
      super().__init__(op=estimator, approx=approx, tf=kernel, **kwargs)
  
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 ImplicitGradient object from inherited base classes: Inference with example: obj = ImplicitGradient(approx, estimator, kernel)