Bắt đầu ngayBắt đầu miễn phí

Chọn hành động trong REINFORCE

Viết hàm select_action cho REINFORCE, hàm này sẽ được tác tử REINFORCE của bạn dùng để chọn hành động ở mỗi bước.

Trong DQN, lượt truyền xuôi của mạng trả về các giá trị Q; trong REINFORCE, nó trả về xác suất hành động, từ đó có thể lấy mẫu trực tiếp một hành động.

Một policy network và một state đã được nạp sẵn trong môi trường của bạn.

torch.distributions.Categorical đã được import với tên Categorical.

Bài tập này là một phần của khóa học

Deep Reinforcement Learning bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Lấy xác suất hành động dưới dạng một tensor của torch.
  • Tạo đối tượng torch Distribution tương ứng với các xác suất hành động.
  • Lấy mẫu một hành động từ phân phối đó.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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}')
Chỉnh sửa và Chạy Mã