shared_randomstreams
– Friendly random numbers¶
Guide¶
Since Theano uses a functional design, producing pseudo-random numbers in a
graph is not quite as straightforward as it is in numpy. If you are using Theano’s
shared variables, then a RandomStreams object is probably what you want. (If you are
using Module then this tutorial will be useful but not exactly what you want.
Have a look at the RandomFunction
Op.)
The way to think about putting randomness into Theano’s computations is to put random variables in your graph. Theano will allocate a numpy RandomState object for each such variable, and draw from it as necessary. We will call this sort of sequence of random numbers a random stream.
For an example of how to use random numbers, see Using Random Numbers.
Reference¶
-
class
shared_randomstreams.
RandomStreams
(raw_random.RandomStreamsBase)¶ This is a symbolic stand-in for
numpy.random.RandomState
. Random variables of various distributions are instantiated by calls to parent classraw_random.RandomStreamsBase
.-
updates
()¶ 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
parameter of function.
-
seed
(meta_seed)¶ 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 (via gen).
Returns: None
-
gen
(op, *args, **kwargs)¶ Return the random variable from op(*args, **kwargs), but also install special attributes (
.rng
andupdate
, seeRandomVariable
) into it.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, ...
-
-
class
shared_randomstreams.
RandomVariable
(object)¶ -
rng
¶ The shared variable whose
.value
is the numpy RandomState generator feeding this random variable.
-
update
¶ A pair whose first element is a shared variable whose value is a numpy RandomState, and whose second element is an [symbolic] expression for the next value of that RandomState after drawing samples. Including this pair in the``updates`` list to function will cause the function to update the random number generator feeding this variable.
-