Actieselectie in REINFORCE
Schrijf de REINFORCE-functie select_action, die je REINFORCE-agent bij elke stap gebruikt om een actie te kiezen.
Bij DQN gaf de forward pass van het netwerk Q-waarden terug; bij REINFORCE krijg je actiekansen terug, waaruit je direct een actie kunt sampelen.
Er zijn een policy-netwerk en een state in je omgeving geladen.
torch.distributions.Categorical is geïmporteerd als Categorical.
Deze oefening maakt deel uit van de cursus
Deep Reinforcement Learning in Python
Oefeninstructies
- Verkrijg de actiekansen als een torch-tensor.
- Verkrijg de torch Distribution die hoort bij de actiekansen.
- Sample een actie uit de verdeling.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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}')