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

Làm việc với phân phối rời rạc

Bạn sắp làm việc với các policy ngẫu nhiên: policy mô tả hành vi của agent ở một trạng thái nhất định dưới dạng một phân phối xác suất trên các hành động.

PyTorch có thể biểu diễn các phân phối rời rạc bằng lớp torch.distributions.Categorical, và bạn sẽ thực hành với nó ngay bây giờ.

Bạn sẽ thấy rằng thực ra các số dùng làm đầu vào không nhất thiết phải cộng lại thành 1 như xác suất; chúng sẽ được chuẩn hóa tự động.

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

  • Khởi tạo phân phối xác suất dạng categorical.
  • Lấy một mẫu từ phân phối.
  • Chỉ định 3 số dương có tổng bằng 1 để dùng làm xác suất.
  • Chỉ định 5 số dương; Categorical sẽ âm thầm chuẩn hóa chúng để thu được các xác suất.

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.

from torch.distributions import Categorical

def sample_from_distribution(probs):
    print(f"\nInput: {probs}")
    probs = torch.tensor(probs, dtype=torch.float32)
    # Instantiate the categorical distribution
    dist = ____(probs)
    # Take one sample from the distribution
    sampled_index = ____
    print(f"Taking one sample: index {sampled_index}, with associated probability {dist.probs[sampled_index]:.2f}")

# Specify 3 positive numbers summing to 1
sample_from_distribution([.3, ____, ____])
# Specify 5 positive numbers that do not sum to 1
sample_from_distribution([2, ____, ____, ____, ____])
Chỉnh sửa và Chạy Mã