class_docstr: Parameterizes `q(z_t | z_{t-1}, x_{t:T})`, which is the basic building block
  of the guide (i.e. the variational distribution). The dependence on `x_{t:T}` is
  through the hidden state of the RNN (see the PyTorch module `rnn` below)
class_docstr_tok: ["Parameterizes","`","q","(","z_t","|","z_","{","t-1","}",",","x_","{","t",":","T","}",")","`",",","which","is","the","basic","building","block","of","the","guide","(","i.e",".","the","variational","distribution",")",".","The","dependence","on","`","x_","{","t",":","T","}","`","is","through","the","hidden","state","of","the","RNN","(","see","the","PyTorch","module","`","rnn","`","below",")"]
docstr: Given the latent z at at a particular time step t-1 as well as the hidden
  state of the RNN `h(x_{t:T})` we return the mean and scale vectors that
  parameterize the (diagonal) gaussian distribution `q(z_t | z_{t-1}, x_{t:T})`
docstr_tok: ["Given","the","latent","z","at","at","a","particular","time","step","t-1","as","well","as","the","hidden","state","of","the","RNN","`","h","(","x_","{","t",":","T","}",")","`","we","return","the","mean","and","scale","vectors","that","parameterize","the","(","diagonal",")","gaussian","distribution","`","q","(","z_t","|","z_","{","t-1","}",",","x_","{","t",":","T","}",")","`"]
code: def forward(self, z_t_1, h_rnn):
      """
      Given the latent z at at a particular time step t-1 as well as the hidden
      state of the RNN `h(x_{t:T})` we return the mean and scale vectors that
      parameterize the (diagonal) gaussian distribution `q(z_t | z_{t-1}, x_{t:T})`
      """
      # combine the rnn hidden state with a transformed version of z_t_1
      h_combined = 0.5 * (
          self.tanh(self.lin_z_to_hidden(z_t_1)) + h_rnn
      )
      # use the combined hidden state to compute the mean used to sample z_t
      loc = self.lin_hidden_to_loc(h_combined)
      # use the combined hidden state to compute the scale used to sample z_t
      scale = self.softplus(self.lin_hidden_to_scale(h_combined))
      # return loc, scale which can be fed into Normal
      return loc, scale
  
imports: import argparse
  import logging
  import time
  from os.path import exists
  import numpy
  import torch
  import torch.nn
  import pyro
  import pyro.contrib.examples.polyphonic_data_loader
  import pyro.distributions
  import pyro.poutine
  from pyro.distributions import TransformedDistribution
  from pyro.distributions.transforms import affine_autoregressive
  from pyro.infer import SVI, JitTrace_ELBO, Trace_ELBO, TraceEnum_ELBO, TraceTMC_ELBO, config_enumerate
  from pyro.optim import ClippedAdam
label_desc: Use image node_id 2 for calling the Combiner obj's underlying member method code with example usage: obj.forward(z_t_1, h_rnn) and returns: loc,  scale