def get_train_data(self, states: torch.Tensor, actions: torch.Tensor) -> Tuple[(torch.Tensor, torch.Tensor, torch.Tensor)]:
    (mu, sigma, V_hat) = self(states)
    normal: Union[(D.Normal, SquashedNormal)]
    if self.action_bound:
        normal = SquashedNormal(mu, sigma, self.action_bound)
    else:
        normal = D.Normal(mu, sigma)
    log_probs = normal.log_prob(actions)
    entropy = (- log_probs.mean(dim=(- 1)))
    return (log_probs, entropy, V_hat)
def get_train_data(self, states: torch.Tensor, actions: torch.Tensor) -> Tuple[(torch.Tensor, torch.Tensor, torch.Tensor)]:
    (mu, sigma, V_hat) = self(states)
    normal: Union[(D.Normal, SquashedNormal)]
    if self.action_bound:
        normal = SquashedNormal(mu, sigma, self.action_bound)
    else:
        normal = D.Normal(mu, sigma)
    log_probs = normal.log_prob(actions)
    entropy = (- log_probs.mean(dim=(- 1)))
    return (log_probs, entropy, V_hat)