Архітектура політики-мережі
Побудуйте архітектуру Policy Network, яку ви зможете використати пізніше для тренування вашого агента з градієнтом політики.
Політика-мережа приймає стан як вхід і повертає розподіл імовірностей у просторі дій. Для середовища Lunar Lander ви працюєте з чотирма дискретними діями, тож мережа має повертати імовірність для кожної з цих дій.
Ця вправа є частиною курсу
Глибоке навчання з підкріпленням у Python
Інструкції до вправи
- Задайте розмір вихідного шару політики-мережі; для гнучкості використайте назву змінної, а не конкретне число.
- Переконайтеся, що фінальний шар повертає імовірності.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)