开始使用免费开始使用

REINFORCE 中的动作选择

编写 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}')
编辑并运行代码