def get_train_data(self, states: torch.Tensor, actions: torch.Tensor) -> Tuple[(torch.Tensor, torch.Tensor, torch.Tensor)]:
    (pi_logits, V_hat) = self._get_dist_params(states)
    num_actions = actions.shape[1]
    pi_hat = D.Categorical(logits=pi_logits.unsqueeze(dim=1).repeat((1, num_actions, 1)))
    log_probs = pi_hat.log_prob(actions)
    entropy = pi_hat.entropy()
    return (log_probs, entropy, V_hat)
def get_train_data(self, states: torch.Tensor, actions: torch.Tensor) -> Tuple[(torch.Tensor, torch.Tensor, torch.Tensor)]:
    (pi_logits, V_hat) = self._get_dist_params(states)
    num_actions = actions.shape[1]
    pi_hat = D.Categorical(logits=pi_logits.unsqueeze(dim=1).repeat((1, num_actions, 1)))
    log_probs = pi_hat.log_prob(actions)
    entropy = pi_hat.entropy()
    return (log_probs, entropy, V_hat)