Робота з дискретними розподілами
Незабаром ви працюватимете зі стохастичними політиками: політиками, які описують поведінку агента в заданому стані як розподіл імовірностей над діями.
PyTorch може представляти дискретні розподіли за допомогою класу torch.distributions.Categorical, з яким ви зараз поекспериментуєте.
Ви побачите, що насправді числа, які подаються на вхід, не обов'язково мають сумуватися до 1, як імовірності; вони автоматично нормалізуються.
Ця вправа є частиною курсу
Глибоке навчання з підкріпленням у Python
Інструкції до вправи
- Створіть категоріальний розподіл імовірностей.
- Візьміть одну вибірку з цього розподілу.
- Вкажіть 3 додатні числа, що сумуються до 1, щоб вони слугували імовірностями.
- Вкажіть 5 додатних чисел; Categorical непомітно нормалізує їх, щоб отримати імовірності.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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, ____, ____, ____, ____])