Aan de slagGa gratis aan de slag

De architectuur van het policy-netwerk

Bouw de architectuur voor een Policy Network dat je later kunt gebruiken om je policy gradient-agent te trainen.

Het policy-netwerk neemt de toestand (state) als input en geeft in de actieruimte een waarschijnlijkheid terug. In de Lunar Lander-omgeving werk je met vier discrete acties, dus je wilt dat je netwerk voor elk van die acties een waarschijnlijkheid uitstuurt.

Deze oefening maakt deel uit van de cursus

Deep Reinforcement Learning in Python

Cursus bekijken

Oefeninstructies

  • Geef de grootte op voor de outputlaag van het policy-netwerk; gebruik voor flexibiliteit de variabelenaam in plaats van het daadwerkelijke getal.
  • Zorg dat de laatste laag waarschijnlijkheden teruggeeft.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

class PolicyNetwork(nn.Module):
  def __init__(self, state_size, action_size):
    super(PolicyNetwork, self).__init__()
    self.fc1 = nn.Linear(state_size, 64)
    self.fc2 = nn.Linear(64, 64)
    # Give the desired size for the output layer
    self.fc3 = nn.Linear(64, ____)

  def forward(self, state):
    x = torch.relu(self.fc1(torch.tensor(state)))
    x = torch.relu(self.fc2(x))
    # Obtain the action probabilities
    action_probs = ____(self.fc3(x), dim=-1)
    return action_probs
  
policy_network = PolicyNetwork(8, 4)
action_probs = policy_network(state)
print('Action probabilities:', action_probs)
Code bewerken en uitvoeren