Aan de slagGa gratis aan de slag

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

Cursus bekijken

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}')
Code bewerken en uitvoeren