A categorical distribution models a discrete outcome selected from a finite set of categories. The categories may be named values such as ice cream, frozen yogurt, and sherbet, or encoded as indices such as 0, 1, and 2. Its parameters assign a probability to each possible outcome. section 2.1.7
Categorical distributions are discrete: their probability distribution function gives P(X = x) for a specific outcome. A Bernoulli distribution is the two-outcome special case, while a discrete uniform distribution assigns equal probability to every category. section 2.1.7
Constructing and sampling a Pyro distribution
In Pyro, provide category probabilities as a tensor: Categorical(probs=torch.tensor([.45, .30, .25])). Calling .sample() randomly generates one category index, such as tensor(1.). Repeated calls can produce different outputs. section 2.1.7 section 2.2.2
Listing 2.3 Canonical parameters in Pyro
import torch from pyro.distributions import Bernoulli, Categorical, Gamma, Normal #1 print(Categorical(probs=torch.tensor([.45, .30, .25]))) #2 print(Normal(loc=0.0, scale=1.0)) print(Bernoulli(probs=0.4)) print(Gamma(concentration=1.0, rate=2.0))
Use the Pyro parameter listing to compare Categorical with Bernoulli, Normal, and Gamma distribution objects. section 2.1.7


