Práce s diskrétními rozděleními
Brzy budeš pracovat se stochastickými politikami – tedy politikami, které reprezentují chování agenta v daném stavu jako pravděpodobnostní rozdělení přes akce.
PyTorch umožňuje reprezentovat diskrétní rozdělení pomocí třídy torch.distributions.Categorical, se kterou si teď vyzkoušíš pracovat.
Uvidíš, že vstupní čísla nemusí nutně tvořit součet 1 jako klasické pravděpodobnosti – normalizace proběhne automaticky.
Toto cvičení je součástí kurzu
Deep Reinforcement Learning v Pythonu
Pokyny k cvičení
- Vytvoř instanci kategorického pravděpodobnostního rozdělení.
- Vezmi jeden vzorek z tohoto rozdělení.
- Zadej 3 kladná čísla se součtem 1, která budou sloužit jako pravděpodobnosti.
- Zadej 5 kladných čísel;
Categoricalje automaticky normalizuje na pravděpodobnosti.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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, ____, ____, ____, ____])