random_seed_generator: Generates variable seeds upon each call to a RNG-using...

random_seed_generatorR Documentation

Generates variable seeds upon each call to a RNG-using function.

Description

In Keras, all RNG-using methods (such as random_normal()) are stateless, meaning that if you pass an integer seed to them (such as seed = 42), they will return the same values at each call. In order to get different values at each call, you must use a SeedGenerator instead as the seed argument. The SeedGenerator object is stateful.

Usage

random_seed_generator(seed = NULL, name = NULL, ...)

Arguments

seed

Initial seed for the random number generator

name

String, name for the object

...

For forward/backward compatability.

Value

A SeedGenerator instance, which can be passed as the ⁠seed = ⁠ argument to other random tensor generators.

Examples

seed_gen <- random_seed_generator(seed = 42)
values <- random_normal(shape = c(2, 3), seed = seed_gen)
new_values <- random_normal(shape = c(2, 3), seed = seed_gen)

Usage in a layer:

layer_dropout2 <- new_layer_class(
  "dropout2",
  initialize = function(...) {
    super$initialize(...)
    self$seed_generator <- random_seed_generator(seed = 1337)
  },
  call = function(x, training = FALSE) {
    if (training) {
      return(random_dropout(x, rate = 0.5, seed = self$seed_generator))
    }
    return(x)
  }
)

out <- layer_dropout(rate = 0.8)
out(op_ones(10), training = TRUE)
## tf.Tensor([0. 5. 5. 0. 0. 0. 0. 0. 0. 0.], shape=(10), dtype=float32)

See Also

Other random:
random_beta()
random_binomial()
random_categorical()
random_dropout()
random_gamma()
random_integer()
random_normal()
random_shuffle()
random_truncated_normal()
random_uniform()


rstudio/keras documentation built on April 27, 2024, 10:11 p.m.