Kom igångKom igång gratis

Arbeta med diskreta fördelningar

Du kommer snart att arbeta med stokastiska policyer – policyer som representerar agentens beteende i ett givet tillstånd som en sannolikhetsfördelning över handlingar.

PyTorch kan representera diskreta fördelningar med klassen torch.distributions.Categorical, som du nu ska experimentera med.

Du kommer att se att det faktiskt inte krävs att talen som används som indata summerar till 1, som sannolikheter gör – de normaliseras automatiskt.

Den här övningen är en del av kursen

Djup förstärkningsinlärning i Python

Visa kurs

Övningsinstruktioner

  • Instantiera den kategoriska sannolikhetsfördelningen.
  • Ta ett urval från fördelningen.
  • Ange 3 positiva tal som summerar till 1, för att fungera som sannolikheter.
  • Ange 5 positiva tal; Categorical normaliserar dem tyst för att erhålla sannolikheter.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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, ____, ____, ____, ____])
Redigera och kör kod