class_docstr: Decorator to register a KL divergence implementation function.
  
  Usage:
  
  @distributions.RegisterKL(distributions.Normal, distributions.Normal)
  def _kl_normal_mvn(norm_a, norm_b):
    # Return KL(norm_a || norm_b)
class_docstr_tok: ["Decorator","to","register","a","KL","divergence","implementation","function",".","Usage",":","@","distributions.RegisterKL","(","distributions.Normal",",","distributions.Normal",")","def","_kl_normal_mvn","(","norm_a",",","norm_b",")",":","#","Return","KL","(","norm_a","||","norm_b",")"]
docstr: Initialize the KL registrar.
  
  Args:
    dist_cls_a: the class of the first argument of the KL divergence.
    dist_cls_b: the class of the second argument of the KL divergence.
docstr_tok: ["Initialize","the","KL","registrar",".","Args",":","dist_cls_a",":","the","class","of","the","first","argument","of","the","KL","divergence",".","dist_cls_b",":","the","class","of","the","second","argument","of","the","KL","divergence","."]
code: def __init__(self, dist_cls_a, dist_cls_b):
      """Initialize the KL registrar.
  
      Args:
        dist_cls_a: the class of the first argument of the KL divergence.
        dist_cls_b: the class of the second argument of the KL divergence.
      """
      self._key = (dist_cls_a, dist_cls_b)
  
file_path: tensorflow-upstream/tensorflow/python/ops/distributions/kullback_leibler.py
imports: from tensorflow.python.framework import ops
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import control_flow_assert
  from tensorflow.python.ops import math_ops
  from tensorflow.python.util import deprecation
  from tensorflow.python.util import tf_inspect
  from tensorflow.python.util.tf_export import tf_export
label_desc: Use image node_id 1 to create a new RegisterKL object  with example: obj = RegisterKL(dist_cls_a, dist_cls_b)