docstr: The control variate augmented Monte Carlo gradient estimate
  RAO-BLACKWELLIZED!
docstr_tok: ["The","control","variate","augmented","Monte","Carlo","gradient","estimate","RAO-BLACKWELLIZED","!"]
code: def cv_gradient_initial(self, z):
      """
      The control variate augmented Monte Carlo gradient estimate
      RAO-BLACKWELLIZED!
      """
      z_t = np.transpose(z)
      log_q = self.normal_log_q_initial(z_t)
      log_p = self.log_p(z_t)
      grad_log_q = self.grad_log_q(z)
      gradient = grad_log_q * np.repeat((log_p - log_q).T, 2, axis=0)
  
      alpha0 = alpha_recursion(
          np.zeros(np.sum(self.approx_param_no)),
          grad_log_q,
          gradient,
          np.sum(self.approx_param_no),
      )
  
      vectorized = (
          gradient
          - ((alpha0 / np.var(grad_log_q, axis=1)) * grad_log_q.T).T
      )
  
      return np.mean(vectorized, axis=1)
  
imports: import sys
  import numpy
  import scipy.stats
  from .stoch_optim import RMSProp, ADAM
  from .bbvi_routines import alpha_recursion, log_p_posterior, mb_log_p_posterior
label_desc: Use image node_id 6 for calling the CBBVI obj's underlying member method code with example usage: obj.cv_gradient_initial(z) and returns: np