class_docstr: Probabilistic encoder for the time-variant latent variable `z_t`.
  
  The conditional distribution `q(z_{1:T} | x_{1:T}, f)` is a
  multivariate normal distribution on `R^{latent_size}` at each timestep
  `t`, conditioned on both an intermediate representation of the inputs
  `x_t` from the convolutional encoder, and on a sample of the static
  latent variable `f` at each timestep. The parameters are computed by
  passing the inputs through a bidirectional LSTM function, then passing
  these intermediates through an RNN function and an affine function to
  yield normal parameters for `q(z_t | x_{1:T}, f)`.
  
  In this formulation, we posit that `z_t` is conditionally dependent on
  `f`.
  
  Together with the EncoderStatic class, we can formulate the full
  approximate later posterior `q` inference ("encoder") model as
  
  ```none
  q(z_{1:T}, f | x_{1:T}) = q(f | x_{1:T}) q(z_{1:T} | f, x_{1:T}).
  ```
class_docstr_tok: ["Probabilistic","encoder","for","the","time-variant","latent","variable","`","z_t","`",".","The","conditional","distribution","`","q","(","z_","{","1",":","T","}","|","x_","{","1",":","T","}",",","f",")","`","is","a","multivariate","normal","distribution","on","`","R^","{","latent_size","}","`","at","each","timestep","`","t","`",",","conditioned","on","both","an","intermediate","representation","of","the","inputs","`","x_t","`","from","the","convolutional","encoder",",","and","on","a","sample","of","the","static","latent","variable","`","f","`","at","each","timestep",".","The","parameters","are","computed","by","passing","the","inputs","through","a","bidirectional","LSTM","function",",","then","passing","these","intermediates","through","an","RNN","function","and","an","affine","function","to","yield","normal","parameters","for","`","q","(","z_t","|","x_","{","1",":","T","}",",","f",")","`",".","In","this","formulation",",","we","posit","that","`","z_t","`","is","conditionally","dependent","on","`","f","`",".","Together","with","the","EncoderStatic","class",",","we","can","formulate","the","full","approximate","later","posterior","`","q","`","inference","(","``","encoder","''",")","model","as","``","`","none","q","(","z_","{","1",":","T","}",",","f","|","x_","{","1",":","T","}",")","=","q","(","f","|","x_","{","1",":","T","}",")","q","(","z_","{","1",":","T","}","|","f",",","x_","{","1",":","T","}",")",".","``","`"]
docstr: Constructs a "full" encoder for `z_t`.
  
  Args:
    latent_size: An integer corresponding to the
      dimensionality of the distribution.
    hidden_size: Dimensionality of the LSTM, RNN, and affine function
      parameters.
code: def __init__(self, latent_size, hidden_size):
      """Constructs a "full" encoder for `z_t`.
  
      Args:
        latent_size: An integer corresponding to the
          dimensionality of the distribution.
        hidden_size: Dimensionality of the LSTM, RNN, and affine function
          parameters.
      """
      super(EncoderDynamicFull, self).__init__()
      self.latent_size = latent_size
      self.hidden_size = hidden_size
      self.bilstm = tf_keras.v1.layers.Bidirectional(
          tf_keras.v1.layers.LSTM(hidden_size, return_sequences=True),
          merge_mode="sum",
      )
      self.rnn = tf_keras.v1.layers.SimpleRNN(
          hidden_size, return_sequences=True
      )
      self.output_layer = tf_keras.v1.layers.Dense(2 * latent_size)
  
imports: from datetime import datetime
  import functools
  from absl import app
  from absl import flags
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  import tensorflow_probability
  from tensorflow_probability.examples import sprites_dataset
  from tensorflow_probability.python.internal import tf_keras
label_desc: Use image node_id 1 to create a new EncoderDynamicFull object from inherited base classes: tf_keras.v1 with example: obj = EncoderDynamicFull(latent_size, hidden_size)