class_docstr: Probabilistic encoder for the time-variant latent variable `z_t`.
  
  The conditional distribution `q(z_t | x_t)` is a multivariate normal
  distribution on `R^{latent_size}` at each timestep `t`, conditioned on
  an intermediate representation of `x_t` from the convolutional
  encoder. The parameters are computed by a one-hidden layer neural
  net.
  
  In this formulation, we posit that the dynamic latent variable `z_t`
  is independent of static latent variable `f`.
  
  Together with the EncoderStatic class, we can formulate the factorized
  approximate latent posterior `q` inference ("encoder") model as
  
  ```none
  q(z_{1:T}, f | x_{1:T}) = q(f | x_{1:T}) prod_{t=1}^T q(z_t | x_t).
  ```
class_docstr_tok: ["Probabilistic","encoder","for","the","time-variant","latent","variable","`","z_t","`",".","The","conditional","distribution","`","q","(","z_t","|","x_t",")","`","is","a","multivariate","normal","distribution","on","`","R^","{","latent_size","}","`","at","each","timestep","`","t","`",",","conditioned","on","an","intermediate","representation","of","`","x_t","`","from","the","convolutional","encoder",".","The","parameters","are","computed","by","a","one-hidden","layer","neural","net",".","In","this","formulation",",","we","posit","that","the","dynamic","latent","variable","`","z_t","`","is","independent","of","static","latent","variable","`","f","`",".","Together","with","the","EncoderStatic","class",",","we","can","formulate","the","factorized","approximate","latent","posterior","`","q","`","inference","(","``","encoder","''",")","model","as","``","`","none","q","(","z_","{","1",":","T","}",",","f","|","x_","{","1",":","T","}",")","=","q","(","f","|","x_","{","1",":","T","}",")","prod_","{","t=1","}","^T","q","(","z_t","|","x_t",")",".","``","`"]
docstr: Runs the model to generate a distribution `q(z_{1:T} | x_{1:T})`.
  
  Args:
    inputs: A batch of intermediate representations of image frames
      across all timesteps, of shape [..., batch_size, timesteps,
      hidden_size].
  
  Returns:
    A batch of MultivariateNormalDiag distributions with event shape
    [latent_size], batch shape [..., batch_size, timesteps], and
    sample shape [sample_shape, ..., batch_size, timesteps,
    latent_size].
code: def call(self, inputs):
      """Runs the model to generate a distribution `q(z_{1:T} | x_{1:T})`.
  
      Args:
        inputs: A batch of intermediate representations of image frames
          across all timesteps, of shape [..., batch_size, timesteps,
          hidden_size].
  
      Returns:
        A batch of MultivariateNormalDiag distributions with event shape
        [latent_size], batch shape [..., batch_size, timesteps], and
        sample shape [sample_shape, ..., batch_size, timesteps,
        latent_size].
      """
      out = self.dense(inputs)  # (..., batch, time, hidden)
      out = self.output_layer(out)  # (..., batch, time, 2*latent)
      loc = out[..., : self.latent_size]
      scale_diag = (
          tf1.nn.softplus(out[..., self.latent_size :]) + 1e-5
      )  # keep > 0
      return tfd.MultivariateNormalDiag(loc=loc, scale_diag=scale_diag)
  
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 2 for calling the EncoderDynamicFactorized obj's underlying member method code with example usage: obj.call(inputs) and returns: tfd