Выбор действия в REINFORCE
Реализуйте функцию select_action для алгоритма REINFORCE — она будет использоваться агентом для выбора действия на каждом шаге.
В DQN прямой проход сети возвращал Q-значения; в REINFORCE он возвращает вероятности действий, из которых можно напрямую сделать выборку.
В вашем окружении уже загружены сеть политики и состояние.
torch.distributions.Categorical импортирован как Categorical.
Это упражнение является частью курса
Глубокое обучение с подкреплением на Python
Инструкции к упражнению
- Получите вероятности действий в виде тензора torch.
- Получите распределение torch, соответствующее вероятностям действий.
- Выполните выборку действия из этого распределения.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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}')