code: def forward(self, x):
      # define the forward computation on the image x
      # first shape the mini-batch to have pixels in the rightmost dimension
      x = x.reshape(-1, 784)
      # then compute the hidden units
      hidden = self.softplus(self.fc1(x))
      # then return a mean vector and a (positive) square root covariance
      # each of size batch_size x z_dim
      z_loc = self.fc21(hidden)
      z_scale = torch.exp(self.fc22(hidden))
      return z_loc, z_scale
  
imports: import argparse
  import numpy
  import torch
  import torch.nn
  import visdom
  from utils.mnist_cached import MNISTCached
  from utils.mnist_cached import setup_data_loaders
  from utils.vae_plots import mnist_test_tsne, plot_llk, plot_vae_samples
  import pyro
  import pyro.distributions
  from pyro.infer import SVI, JitTrace_ELBO, Trace_ELBO
  from pyro.optim import Adam
label_desc: Use image node_id 2 for calling the Encoder obj's underlying member method code with example usage: obj.forward(x) and returns: z_loc,  z_scale