utils
– Friendly random numbers#
Guide#
PyTensor assigns NumPy RNG states (e.g. Generator
or RandomState
objects) to
each RandomVariable
. The combination of an RNG state, a specific
RandomVariable
type (e.g. NormalRV
), and a set of distribution parameters
uniquely defines the RandomVariable
instances in a graph.
This means that a “stream” of distinct RNG states is required in order to
produce distinct random variables of the same kind. RandomStream
provides a
means of generating distinct random variables in a fully reproducible way.
RandomStream
is also designed to produce simpler graphs and work with more
sophisticated Op
s like Scan
, which makes it the de facto random variable
interface in PyTensor.
For an example of how to use random numbers, see Using Random Numbers.
Reference#
- class pytensor.tensor.random.utils.RandomStream[source]#
This is a symbolic stand-in for
numpy.random.Generator
.- updates()[source]#
- Returns:
a list of all the (state, new_state) update pairs for the random variables created by this object
This can be a convenient shortcut to enumerating all the random variables in a large graph in the
update
argument topytensor.function
.
- seed(meta_seed)[source]#
meta_seed
will be used to seed a temporary random number generator, that will in turn generate seeds for all random variables created by this object (viagen
).- Returns:
None
- gen(op, *args, **kwargs)[source]#
Return the random variable from
op(*args, **kwargs)
.This function also adds the returned variable to an internal list so that it can be seeded later by a call to
seed
.
- uniform, normal, binomial, multinomial, random_integers, ...
See
basic.RandomVariable
.