IniziaInizia gratis

Lavorare con distribuzioni discrete

Presto lavorerai con politiche stocastiche: politiche che rappresentano il comportamento dell'agente in un dato stato come una distribuzione di probabilità sulle azioni.

PyTorch può rappresentare distribuzioni discrete usando la classe torch.distributions.Categorical, con cui ora farai qualche esperimento.

Vedrai che in realtà non è necessario che i numeri forniti in input sommino a 1, come le probabilità: vengono normalizzati automaticamente.

Questo esercizio fa parte del corso

Deep Reinforcement Learning in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Istanzia la distribuzione di probabilità categorica.
  • Estrai un campione dalla distribuzione.
  • Specifica 3 numeri positivi che sommino a 1, da usare come probabilità.
  • Specifica 5 numeri positivi; Categorical li normalizzerà in silenzio per ottenere le probabilità.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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, ____, ____, ____, ____])
Modifica ed esegui il codice