IniziaInizia gratis

Selezione dell'azione in REINFORCE

Scrivi la funzione select_action di REINFORCE, che verrà usata dal tuo agente REINFORCE per selezionare un'azione a ogni passo.

In DQN, il forward pass della rete restituiva i valori Q; in REINFORCE, restituisce le probabilità delle azioni, da cui è possibile campionare direttamente un'azione.

Nel tuo ambiente sono già stati caricati una policy network e uno stato.

torch.distributions.Categorical è stata importata come Categorical.

Questo esercizio fa parte del corso

Deep Reinforcement Learning in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Ottieni le probabilità delle azioni come tensore torch.
  • Ottieni la distribuzione torch corrispondente alle probabilità delle azioni.
  • Campiona un'azione dalla distribuzione.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

def select_action(policy_network, state):
  # Obtain the action probabilities
  action_probs = ____
  print('Action probabilities:', action_probs)
  # Instantiate the action distribution
  action_dist = Categorical(____)
  # Sample an action from the distribution
  action = ____
  log_prob = action_dist.log_prob(action)
  return action.item(), log_prob.reshape(1)

state = torch.rand(8)
action, log_prob = select_action(policy_network, state)
print('Sampled action index:', action)
print(f'Log probability of sampled action: {log_prob.item():.2f}')
Modifica ed esegui il codice