Метод from_seed
Метод from_seed класса Generator создает генератор случайных чисел с детерминированным состоянием. Первым параметром метод принимает зерно (seed) в виде целого числа или списка целых чисел. Вторым параметром можно передать алгоритм генерации. Такой генератор выдает одинаковые последовательности случайных чисел при каждом запуске, что важно для воспроизводимости экспериментов.
Синтаксис
tf.random.Generator.from_seed(seed, alg="philox")
Пример
Давайте создадим генератор с зерном 0 и сгенерируем тензор нормального распределения:
import tensorflow as tf
gen = tf.random.Generator.from_seed(0)
t = gen.normal([5])
print(t)
Результат выполнения кода:
tf.Tensor([ 0.47570992 -1.1072984 -0.42309964 1.0127661 -1.2355417 ], shape=(5,), dtype=float32)
Пример
Давайте убедимся, что два генератора с одинаковым зерном выдают одинаковые значения:
<+python+>
import tensorflow as tf
gen1 = tf.random.Generator.from_seed(42)
gen2 = tf.random.Generator.from_seed(42)
t1 = gen1.uniform([5])
t2 = gen2.uniform([5])
print(t1)
print(t2)
print(tf.reduce_all(t1 == t2))
<-python+>
Результат выполнения кода:
tf.Tensor([0.8172872 0.3795892 0.28274763 0.35754597 0.57692456], shape=(5,), dtype=float32)
tf.Tensor([0.8172872 0.3795892 0.28274763 0.35754597 0.57692456], shape=(5,), dtype=float32)
tf.Tensor(True, shape=(), dtype=bool)
Пример
Давайте создадим генератор с зерном в виде списка чисел и алгоритмом philox:
import tensorflow as tf
gen = tf.random.Generator.from_seed([1, 2, 3], alg="philox")
t = gen.normal([5])
print(t)
Результат выполнения кода:
tf.Tensor([-0.5188205 0.59844387 -1.4939874 0.8721514 1.0104897 ], shape=(5,), dtype=float32)
Смотрите также
-
класс
Generator,
который представляет генератор случайных чисел -
метод
normal,
который генерирует значения нормального распределения -
метод
uniform,
который генерирует значения равномерного распределения -
метод
reset_from_seed,
который сбрасывает состояние генератора по зерну