Aan de slagGa gratis aan de slag

Werken met discrete verdelingen

Je gaat straks werken met stochastische policies: policies die het gedrag van de agent in een gegeven staat weergeven als een kansverdeling over acties.

PyTorch kan discrete verdelingen representeren met de klasse torch.distributions.Categorical, waar je nu mee gaat experimenteren.

Je zult zien dat het niet nodig is dat de getallen die je als invoer gebruikt optellen tot 1, zoals kansen dat doen; ze worden automatisch genormaliseerd.

Deze oefening maakt deel uit van de cursus

Deep Reinforcement Learning in Python

Cursus bekijken

Oefeninstructies

  • Maak een instantie van de categorische kansverdeling.
  • Neem één steekproef uit de verdeling.
  • Geef 3 positieve getallen op die optellen tot 1 als kansen.
  • Geef 5 positieve getallen op; Categorical zal ze stilzwijgend normaliseren tot kansen.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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, ____, ____, ____, ____])
Code bewerken en uitvoeren