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
Ö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;
Categoricalnormaliserar 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, ____, ____, ____, ____])