def evaluate(self, batch_obs, batch_acts):
    '\n\t\t\tEstimate the values of each observation, and the log probs of\n\t\t\teach action in the most recent batch with the most recent\n\t\t\titeration of the actor network. Should be called from learn.\n\n\t\t\tParameters:\n\t\t\t\tbatch_obs - the observations from the most recently collected batch as a tensor.\n\t\t\t\t\t\t\tShape: (number of timesteps in batch, dimension of observation)\n\t\t\t\tbatch_acts - the actions from the most recently collected batch as a tensor.\n\t\t\t\t\t\t\tShape: (number of timesteps in batch, dimension of action)\n\n\t\t\tReturn:\n\t\t\t\tV - the predicted values of batch_obs\n\t\t\t\tlog_probs - the log probabilities of the actions taken in batch_acts given batch_obs\n\t\t'
    V = self.critic(batch_obs).squeeze()
    mean = self.actor(batch_obs)
    if self.discrete:
        dist = Categorical(mean)
    else:
        dist = MultivariateNormal(mean, self.cov_mat)
    log_probs = dist.log_prob(batch_acts)
    return (V, log_probs)
Estimate the values of each observation, and the log probs of
each action in the most recent batch with the most recent
iteration of the actor network. Should be called from learn.

Parameters:
        batch_obs - the observations from the most recently collected batch as a tensor.
                                Shape: (number of timesteps in batch, dimension of observation)
        batch_acts - the actions from the most recently collected batch as a tensor.
                                Shape: (number of timesteps in batch, dimension of action)

Return:
        V - the predicted values of batch_obs
        log_probs - the log probabilities of the actions taken in batch_acts given batch_obs
def evaluate(self, batch_obs, batch_acts):
    '\n\t\t\tEstimate the values of each observation, and the log probs of\n\t\t\teach action in the most recent batch with the most recent\n\t\t\titeration of the actor network. Should be called from learn.\n\n\t\t\tParameters:\n\t\t\t\tbatch_obs - the observations from the most recently collected batch as a tensor.\n\t\t\t\t\t\t\tShape: (number of timesteps in batch, dimension of observation)\n\t\t\t\tbatch_acts - the actions from the most recently collected batch as a tensor.\n\t\t\t\t\t\t\tShape: (number of timesteps in batch, dimension of action)\n\n\t\t\tReturn:\n\t\t\t\tV - the predicted values of batch_obs\n\t\t\t\tlog_probs - the log probabilities of the actions taken in batch_acts given batch_obs\n\t\t'
    V = self.critic(batch_obs).squeeze()
    mean = self.actor(batch_obs)
    if self.discrete:
        dist = Categorical(mean)
    else:
        dist = MultivariateNormal(mean, self.cov_mat)
    log_probs = dist.log_prob(batch_acts)
    return (V, log_probs)