code: def neg_log_likelihood(self, x, standard=False):
          
          x_reshape = tf.reshape(x, [self.batch_size, self.eq_samples, self.iw_samples, self.num_latent])
          c = - 0.5 * math.log(2 * math.pi)
          if standard is False:
              density = c - tf.log(self.std) - (x_reshape - self.mu) ** 2 / (2 * self.std**2)
          else:
              density = c - (x_reshape - self.mu) ** 2 / 2
          # sum over all importance weights. average over all eq_samples
          return tf.reduce_mean(tf.reduce_sum(-density, axis=2), axis=(1, 2))
docs: Calculate Log Likelihood with particular mean and std
          x must be 2D. [batch_size * eqsamples* iwsamples, num_latent]