The normal distribution is the most commonly used probability distribution in statistics. It is Symmetrical and Bell-shaped. If we create a plot of the normal distribution, it will look something like this:
Normal Distribution is a probability distribution where the probability of x is highest at the center and lowest at the ends.
PyTorch has a number of built-in distributions. You can build a tensor of the desired shape with elements drawn from a distribution. Use the torch.distributions package to generate samples from different distributions.
For example, try the following sample code to sample a 2d PyTorch tensor of size
[a,b] from a Normal distribution.
import torch m = torch.distributions.normal.Normal(torch.tensor(0.0), torch.tensor(1.0)) m.sample(sample_shape=(10,2)) # normally distributed with loc=0 and scale=1 #output tensor([[-0.8596, 0.4606], [ 0.5337, -0.5248], [ 0.0535, -0.2472], [-1.5757, -0.3661], [-0.8937, -1.4933], [ 0.5081, 0.9339], [-0.8493, 0.9772], [-0.0069, -0.2202], [ 0.0538, -1.4181], [ 1.0918, 0.8666]])
Creates a normal or Gaussian distribution parameterized by
loc: the mean of the distribution and
scale: the standard deviation of the distribution.
sample() generates a
sample_shape of the sample.
The uniform distribution is a probability distribution in which every value between an interval from a to b is equally likely to occur. It has Symmetrical and Rectangular-shaped. If we create a plot of the uniform distribution, it will look something like this:
Uniform distribution is a probability distribution where the probability of x is constant. Let’s create a matrix of dimension 10 × 2, filled with random elements samples from the Uniform distribution parameterized by low = 0.0 and high = 5.0.
m = torch.distributions.uniform.Uniform(low=torch.tensor([0.0]),high=torch.tensor([5.0])) m.sample(sample_shape=(10,2)).numpy() # uniformly distributed in the range [0.0, 5.0)
Generates uniformly distributed random samples from the half-open interval.
- low – lower range (inclusive).
- high – upper range (exclusive).
Plot Uniform Distribution
import seaborn as sns sns.set() m = torch.distributions.uniform.Uniform(low=torch.tensor([0.0]),high=torch.tensor([5.0])) uniform_dis=m.sample(sample_shape=()).numpy() # uniformly distributed in the range [0.0, 5.0) sns.displot(uniform_dis, kind='kde')
Both distributions are symmetrical. That is, if we were to draw a line down the distribution’s center, the distribution’s left and right sides would perfectly mirror each other.