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
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}')