class_docstr: Keras `Layer` to parameterize a Pixel CNN++ distribution.
  
  This is a Keras implementation of the Pixel CNN++ network, as described in
  Salimans et al. (2017)[1] and van den Oord et al. (2016)[2].
  (https://github.com/openai/pixel-cnn).
  
  #### References
  
  [1]: Tim Salimans, Andrej Karpathy, Xi Chen, and Diederik P. Kingma.
       PixelCNN++: Improving the PixelCNN with Discretized Logistic Mixture
       Likelihood and Other Modifications. In _International Conference on
       Learning Representations_, 2017.
       https://pdfs.semanticscholar.org/9e90/6792f67cbdda7b7777b69284a81044857656.pdf
       Additional details at https://github.com/openai/pixel-cnn
  
  [2]: Aaron van den Oord, Nal Kalchbrenner, Oriol Vinyals, Lasse Espeholt,
       Alex Graves, and Koray Kavukcuoglu. Conditional Image Generation with
       PixelCNN Decoders. In _30th Conference on Neural Information Processing
       Systems_, 2016.
       https://papers.nips.cc/paper/6527-conditional-image-generation-with-pixelcnn-decoders.pdf
class_docstr_tok: ["Keras","`","Layer","`","to","parameterize","a","Pixel","CNN++","distribution",".","This","is","a","Keras","implementation","of","the","Pixel","CNN++","network",",","as","described","in","Salimans","et","al",".","(","2017",")","[","1","]","and","van","den","Oord","et","al",".","(","2016",")","[","2","]",".","(","https",":","\/\/github.com\/openai\/pixel-cnn",")",".","#","#","#","#","References","[","1","]",":","Tim","Salimans",",","Andrej","Karpathy",",","Xi","Chen",",","and","Diederik","P.","Kingma",".","PixelCNN++",":","Improving","the","PixelCNN","with","Discretized","Logistic","Mixture","Likelihood","and","Other","Modifications",".","In","_International","Conference","on","Learning","Representations_",",","2017.","https",":","\/\/pdfs.semanticscholar.org\/9e90\/6792f67cbdda7b7777b69284a81044857656.pdf","Additional","details","at","https",":","\/\/github.com\/openai\/pixel-cnn","[","2","]",":","Aaron","van","den","Oord",",","Nal","Kalchbrenner",",","Oriol","Vinyals",",","Lasse","Espeholt",",","Alex","Graves",",","and","Koray","Kavukcuoglu",".","Conditional","Image","Generation","with","PixelCNN","Decoders",".","In","_30th","Conference","on","Neural","Information","Processing","Systems_",",","2016.","https",":","\/\/papers.nips.cc\/paper\/6527-conditional-image-generation-with-pixelcnn-decoders.pdf"]
docstr: Call the Pixel CNN network model.
  
  Args:
    inputs: 4D `Tensor` of image data with dimensions [batch size, height,
      width, channels] or a 2-element `list`. If `list`, the first element is
      the 4D image `Tensor` and the second element is a `Tensor` with
      conditional input data (e.g. VAE encodings or class labels) with the
      same leading batch dimension as the image `Tensor`.
    training: `bool` or `None`. If `bool`, it controls the dropout layer,
      where `True` implies dropout is active. If `None`, it it defaults to
      `tf_keras.backend.learning_phase()`
  
  Returns:
    outputs: a 3- or 4-element `list` of `Tensor`s in the following order:
      component_logits: 4D `Tensor` of logits for the Categorical distribution
        over Quantized Logistic mixture components. Dimensions are
        `[batch_size, height, width, num_logistic_mix]`.
      locs: 4D `Tensor` of location parameters for the Quantized Logistic
        mixture components. Dimensions are `[batch_size, height, width,
        num_logistic_mix, num_channels]`.
      scales: 4D `Tensor` of location parameters for the Quantized Logistic
        mixture components. Dimensions are `[batch_size, height, width,
        num_logistic_mix, num_channels]`.
      coeffs: 4D `Tensor` of coefficients for the linear dependence among
        color channels, included only if the image has more than one channel.
        Dimensions are `[batch_size, height, width, num_logistic_mix,
        num_coeffs]`, where
        `num_coeffs = num_channels * (num_channels - 1) // 2`.
docstr_tok: ["Call","the","Pixel","CNN","network","model",".","Args",":","inputs",":","4D","`","Tensor","`","of","image","data","with","dimensions","[","batch","size",",","height",",","width",",","channels","]","or","a","2-element","`","list","`",".","If","`","list","`",",","the","first","element","is","the","4D","image","`","Tensor","`","and","the","second","element","is","a","`","Tensor","`","with","conditional","input","data","(","e.g",".","VAE","encodings","or","class","labels",")","with","the","same","leading","batch","dimension","as","the","image","`","Tensor","`",".","training",":","`","bool","`","or","`","None","`",".","If","`","bool","`",",","it","controls","the","dropout","layer",",","where","`","True","`","implies","dropout","is","active",".","If","`","None","`",",","it","it","defaults","to","`","tf_keras.backend.learning_phase","(",")","`","Returns",":","outputs",":","a","3-","or","4-element","`","list","`","of","`","Tensor","`","s","in","the","following","order",":","component_logits",":","4D","`","Tensor","`","of","logits","for","the","Categorical","distribution","over","Quantized","Logistic","mixture","components",".","Dimensions","are","`","[","batch_size",",","height",",","width",",","num_logistic_mix","]","`",".","locs",":","4D","`","Tensor","`","of","location","parameters","for","the","Quantized","Logistic","mixture","components",".","Dimensions","are","`","[","batch_size",",","height",",","width",",","num_logistic_mix",",","num_channels","]","`",".","scales",":","4D","`","Tensor","`","of","location","parameters","for","the","Quantized","Logistic","mixture","components",".","Dimensions","are","`","[","batch_size",",","height",",","width",",","num_logistic_mix",",","num_channels","]","`",".","coeffs",":","4D","`","Tensor","`","of","coefficients","for","the","linear","dependence","among","color","channels",",","included","only","if","the","image","has","more","than","one","channel",".","Dimensions","are","`","[","batch_size",",","height",",","width",",","num_logistic_mix",",","num_coeffs","]","`",",","where","`","num_coeffs","=","num_channels","*","(","num_channels","-","1",")","\/\/","2","`","."]
code: def call(self, inputs, training=None):
      """Call the Pixel CNN network model.
  
      Args:
        inputs: 4D `Tensor` of image data with dimensions [batch size, height,
          width, channels] or a 2-element `list`. If `list`, the first element is
          the 4D image `Tensor` and the second element is a `Tensor` with
          conditional input data (e.g. VAE encodings or class labels) with the
          same leading batch dimension as the image `Tensor`.
        training: `bool` or `None`. If `bool`, it controls the dropout layer,
          where `True` implies dropout is active. If `None`, it it defaults to
          `tf_keras.backend.learning_phase()`
  
      Returns:
        outputs: a 3- or 4-element `list` of `Tensor`s in the following order:
          component_logits: 4D `Tensor` of logits for the Categorical distribution
            over Quantized Logistic mixture components. Dimensions are
            `[batch_size, height, width, num_logistic_mix]`.
          locs: 4D `Tensor` of location parameters for the Quantized Logistic
            mixture components. Dimensions are `[batch_size, height, width,
            num_logistic_mix, num_channels]`.
          scales: 4D `Tensor` of location parameters for the Quantized Logistic
            mixture components. Dimensions are `[batch_size, height, width,
            num_logistic_mix, num_channels]`.
          coeffs: 4D `Tensor` of coefficients for the linear dependence among
            color channels, included only if the image has more than one channel.
            Dimensions are `[batch_size, height, width, num_logistic_mix,
            num_coeffs]`, where
            `num_coeffs = num_channels * (num_channels - 1) // 2`.
      """
      return self._network(inputs, training=training)
  
imports: import functools
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import shift
  from tensorflow_probability.python.distributions import categorical
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import logistic
  from tensorflow_probability.python.distributions import mixture_same_family
  from tensorflow_probability.python.distributions import quantized_distribution
  from tensorflow_probability.python.distributions import transformed_distribution
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import tf_keras
  from tensorflow_probability.python.layers import weight_norm
label_desc: Use image node_id 3 for calling the _PixelCNNNetwork obj's underlying member method code with example usage: obj.call(inputs, training) and returns: self