class_docstr: Implements a natural gradient descent optimizer for variational models
  that are based on a distribution q(u) = N(q_mu, q_sqrt q_sqrtᵀ) that is
  parameterized by mean q_mu and lower-triangular Cholesky factor q_sqrt
  of the covariance.
  
  Note that this optimizer does not implement the standard API of
  tf.optimizers.Optimizer. Its only public method is minimize(), which has
  a custom signature (var_list needs to be a list of (q_mu, q_sqrt) tuples,
  where q_mu and q_sqrt are gpflow.Parameter instances, not tf.Variable).
  
  Note furthermore that the natural gradients are implemented only for the
  full covariance case (i.e., q_diag=True is NOT supported).
  
  When using in your work, please cite :cite:t:`salimbeni18`.
class_docstr_tok: ["Implements","a","natural","gradient","descent","optimizer","for","variational","models","that","are","based","on","a","distribution","q","(","u",")","=","N","(","q_mu",",","q_sqrt","q_sqrt\u1d40",")","that","is","parameterized","by","mean","q_mu","and","lower-triangular","Cholesky","factor","q_sqrt","of","the","covariance",".","Note","that","this","optimizer","does","not","implement","the","standard","API","of","tf.optimizers.Optimizer",".","Its","only","public","method","is","minimize","(",")",",","which","has","a","custom","signature","(","var_list","needs","to","be","a","list","of","(","q_mu",",","q_sqrt",")","tuples",",","where","q_mu","and","q_sqrt","are","gpflow.Parameter","instances",",","not","tf.Variable",")",".","Note","furthermore","that","the","natural","gradients","are","implemented","only","for","the","full","covariance","case","(","i.e.",",","q_diag=True","is","NOT","supported",")",".","When","using","in","your","work",",","please","cite",":","cite",":","t",":","`","salimbeni18","`","."]
code: def get_config(self) -> Dict[str, Any]:
      config: Dict[str, Any] = super().get_config()
      config.update({"gamma": self._serialize_hyperparameter("gamma")})
      return config
  
imports: import abc
  import functools
  from typing import Any, Callable, Dict, Optional, Sequence, Tuple, Union
  import tensorflow
  from check_shapes import check_shapes
  from ..base import AnyNDArray, Parameter, _to_constrained
label_desc: Use image node_id 5 for calling the NaturalGradient obj's underlying member method code with example usage: obj.get_config() and returns: config