開始使用免費開始

在 REINFORCE 中選擇動作

撰寫 REINFORCE 的 select_action 函式,讓你的 REINFORCE 智慧體在每一步都能選擇動作。

在 DQN 中,網路的 forward 傳遞會回傳 Q 值;在 REINFORCE 中,則是回傳動作機率,你可以直接從中抽樣動作。

一個 policy network 與一個 state 已載入到你的環境中。

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}')
編輯並執行程式碼