Spec-Zone.ru › TensorFlow 1.15

tf.random.experimental.Generator

Генератор псевдослучайных чисел.

Наследуется от: Checkpointable

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.random.experimental.Generator, `tf.compat.v2.random.experimental.Generator`

tf.random.experimental.Generator(
    copy_from=None, state=None, alg=None
)

Использует переменную для управления внутренним состоянием и позволяет выбирать алгоритм генерации псевдослучайных чисел (RNG).

CPU, GPU и TPU с тем же алгоритмом и начальным значением генерируют одни и те же целые псевдослучайные числа. Результаты с плавающей запятой (например, результат normal) могут иметь небольшие числовые расхождения между CPU и GPU.

Аргументы
copy_from генератор, который нужно скопировать.
state вектор типа STATE_TYPE, представляющий начальное состояние RNG, длина и семантика которого зависят от алгоритма.
alg алгоритм RNG. Возможные значения — RNG_ALG_PHILOX для алгоритма Philox и RNG_ALG_THREEFRY для алгоритма ThreeFry (см. статью «Параллельные псевдослучайные числа: так просто, как 1, 2, 3» [https://www.thesalmons.org/john/random123/papers/random123sc11.pdf]). Примечание: RNG_ALG_PHILOX гарантирует, что одинаковые числа генерируются (при одинаковом состоянии случайности) на всех архитектурах (CPU, GPU, XLA и т. д.).
Атрибуты
algorithm Алгоритм RNG.
key Часть «ключ» состояния RNG на основе счётчика.

Для алгоритма RNG на основе счётчика, такого как Philox и ThreeFry (как описано в статье «Параллельные псевдослучайные числа: так просто, как 1, 2, 3» [https://www.thesalmons.org/john/random123/papers/random123sc11.pdf]), состояние RNG состоит из двух частей: счётчика и ключа. Выход генерируется по формуле: output=hash(key, counter), т. е. хеширование счётчика, параметризованного ключом. Два RNG с двумя различными ключами можно рассматривать как генерирующие два независимых потока случайных чисел (поток формируется путём увеличения счётчика).

state Внутреннее состояние RNG.

Методы

binomial

Просмотреть исходный код

binomial(
    shape, counts, probs, dtype=tf.dtypes.int32, name=None
)

Выводит случайные значения из биномиального распределения.

Сгенерированные значения следуют биномиальному распределению с заданными параметрами количества испытаний и вероятности успеха.

Пример:

counts = [10., 20.]
# Probability of success.
probs = [0.8, 0.9]

rng = tf.random.experimental.Generator.from_seed(seed=234)
binomial_samples = rng.binomial(shape=[2], counts=counts, probs=probs)
Аргументы
shape Целочисленный тензор или массив Python размерности 1. Форма выходного тензора.
counts Тензор или значение Python размерности 0/1. Количество испытаний биномиального распределения. Должен быть совместим по транспонированию с самым левым измерением, определённым shape.
probs Тензор или значение Python размерности 0/1. Вероятность успеха для биномиального распределения. Должен быть совместим по транспонированию с самым левым измерением, определённым shape.
dtype Тип выходного значения. По умолчанию: tf.int32
name Название операции (необязательно).
Возвращаемое значение
samples Тензор заданной формы, заполненный случайными биномиальными значениями. Для каждого i, каждый элемент samples[i, ...] — независимое значение из биномиального распределения на counts[i] испытаниях с вероятностью успеха probs[i].

from_key_counter

Просмотреть исходный код

@classmethod
from_key_counter(
    key, counter, alg
)

Создаёт генератор по ключу и счётчику.

Этот конструктор применяется только в случае алгоритма на основе счётчика. См. метод key для значения «ключа» и «счётчика».

Аргументы
key ключ для RNG, скаляр типа STATE_TYPE.
counter вектор типа STATE_TYPE, представляющий начальный счётчик RNG, длина которого зависит от алгоритма.
alg алгоритм RNG. Если None, будет выбран автоматически. См. __init__ для возможных значений.
Возвращаемое значение
Новый генератор.

from_non_deterministic_state

Просмотреть исходный код

@classmethod
from_non_deterministic_state(
    alg=None
)

Создаёт генератор, не определяя состояние.

Источник не определения будет зависеть от платформы и времени.

Аргументы
alg (необязательно) алгоритм RNG. Если None, будет выбран автоматически. См. __init__ для возможных значений.
Возвращаемое значение
Новый генератор.

from_seed

Просмотреть исходный код

@classmethod
from_seed(
    seed, alg=None
)

Создаёт генератор из начального значения.

Начальное значение — 1024-битовое беззнаковое целое число, представленное либо как целое число Python, либо как вектор целых чисел. Значения начального значения, меньшие 1024 бит, будут дополнены. Заполнение, внутренняя структура начального значения и способ преобразования начального значения в состояние — всё это не определено. Единственная семантика начального значения — два разных начальных значения, скорее всего, приведут к двум независимым генераторам (но это не гарантируется).

Аргументы
seed начальное значение для RNG.
alg (необязательно) алгоритм RNG. Если None, будет выбран автоматически. См. __init__ для возможных значений.
Возвращаемое значение
Новый генератор.

from_state

Просмотреть исходный код

@classmethod
from_state(
    state, alg
)

Создаёт генератор из состояния.

См. __init__ для описания state и alg.

Аргументы
state новое состояние.
alg алгоритм RNG.
Возвращаемое значение
Новый генератор.

make_seeds

Просмотреть исходный код

make_seeds(
    count=1
)

Генерирует начальные значения для бессостоятельных операций случайности.

Например:

seeds = get_global_generator().make_seeds(count=10)
for i in range(10):
  seed = seeds[:, i]
  numbers = stateless_random_normal(shape=[2, 3], seed=seed)
  ...
Аргументы
count количество пар начальных значений (примечание: бессостоятельные операции случайности требуют пары начальных значений для вызова).
Возвращаемое значение
Тензор формы [2, count] и типа int64.

normal

Просмотреть исходный код

normal(
    shape, mean=0.0, stddev=1.0, dtype=tf.dtypes.float32, name=None
)

Выводит случайные значения из нормального распределения.

Аргументы
shape Целочисленный тензор или массив Python размерности 1. Форма выходного тензора.
mean Тензор или значение Python размерности 0 типа dtype. Математическое ожидание нормального распределения.
stddev Тензор или значение Python размерности 0 типа dtype. Стандартное отклонение нормального распределения.
dtype Тип выходного значения.
name Название операции (необязательно).
Возвращаемое значение
Тензор заданной формы, заполненный случайными значениями из нормального распределения.

reset

Просмотреть исходный код

reset(
    state
)

Сбрасывает генератор новым состоянием.

См. __init__ для значения «состояния».

Аргументы
state новое состояние.

reset_from_key_counter

Просмотреть исходный код

reset_from_key_counter(
    key, counter
)

Сброс генератора с помощью новой пары ключ-счётчик.

См. from_key_counter для значения «ключ» и «счётчик».

Аргументы
key новый ключ.
counter новый счётчик.

reset_from_seed

Просмотреть исходный код

reset_from_seed(
    seed
)

Сброс генератора с помощью нового значения.

См. from_seed для значения «семя».

Аргументы
seed новое семя.

skip

Просмотреть исходный код

skip(
    delta
)

Передвинуть счётчик генератора с учётом счётчика.

Аргументы
delta величина продвижения. Состояние генератора после skip(n) будет таким же, как после normal([n]) (или любого другого распределения). Фактическое приращение, добавленное к счётчику, — это неопределённая деталь реализации.

split

Просмотреть исходный код

split(
    count=1
)

Возвращает список независимых объектов Generator.

Два генератора независимы друг от друга в том смысле, что потоки случайных чисел, которые они генерируют, не имеют статистически обнаруживаемых корреляций. Новые генераторы также независимы от старого. Состояние старого генератора будет изменено (как и другие методы генерации случайных чисел), поэтому два вызова split вернут разные новые генераторы.

Например:

gens = get_global_generator().split(count=10)
for gen in gens:
  numbers = gen.normal(shape=[2, 3])
  # ...
gens2 = get_global_generator().split(count=10)
# gens2 will be different from gens

Новые генераторы будут помещены на текущий устройство (возможно, отличное от устройства старого генератора), например:

with tf.device("/device:CPU:0"):
  gen = Generator(seed=1234)  # gen is on CPU
with tf.device("/device:GPU:0"):
  gens = gen.split(count=10)  # gens are on GPU
Аргументы
count количество возвращаемых генераторов.
Возвращаемое значение
Список (длина count) объектов Generator, независимых друг от друга. У новых генераторов используется тот же алгоритм генерации псевдослучайных чисел, что и у старого.

truncated_normal

Просмотреть исходный код

truncated_normal(
    shape, mean=0.0, stddev=1.0, dtype=tf.dtypes.float32, name=None
)

Выводит случайные значения из усеченного нормального распределения.

Сгенерированные значения следуют нормальному распределению со заданным средним значением и стандартным отклонением, за исключением того, что значения, чья величина больше, чем 2 стандартных отклонения от среднего, отбрасываются и выбираются заново.

Аргументы
shape 1-мерный целочисленный тензор или Python-массив. Форма выходного тензора.
mean 0-мерный тензор или Python-значение типа dtype. Среднее значение усеченного нормального распределения.
stddev 0-мерный тензор или Python-значение типа dtype. Стандартное отклонение нормального распределения до усечения.
dtype Тип выходного значения.
name Имя операции (необязательно).
Возвращаемое значение
Тензор заданной формы, заполненный случайными усеченными нормальными значениями.

uniform

Просмотреть исходный код

uniform(
    shape, minval=0, maxval=None, dtype=tf.dtypes.float32, name=None
)

Выводит случайные значения из равномерного распределения.

Сгенерированные значения следуют равномерному распределению в диапазоне [minval, maxval). Нижняя граница minval включается в диапазон, а верхняя граница maxval исключается. (Для чисел с плавающей точкой, особенно для типов с низкой точностью, таких как bfloat16, из-за округления результат иногда может включать maxval.)

Для чисел с плавающей точкой, по умолчанию, диапазон — [0, 1). Для целых чисел, по крайней мере, maxval должен быть указан явно.

В случае целых чисел случайные целые числа несколько смещены, если maxval - minval не является точной степенью двойки. Смещение мало для значений maxval - minval значительно меньших, чем диапазон выходных данных (либо 2**32, либо 2**64).

Аргументы
shape 1-мерный целочисленный тензор или Python-массив. Форма выходного тензора.
minval 0-мерный тензор или Python-значение типа dtype. Нижняя граница диапазона генерируемых случайных значений. По умолчанию 0.
maxval 0-мерный тензор или Python-значение типа dtype. Верхняя граница диапазона генерируемых случайных значений. По умолчанию 1, если dtype с плавающей точкой.
dtype Тип выходного значения.
name Имя операции (необязательно).
Возвращаемое значение
Тензор заданной формы, заполненный случайными равномерными значениями.
Исключения
ValueError Если dtype целочисленный и maxval не указан.

uniform_full_int

Просмотреть исходный код

uniform_full_int(
    shape, dtype=tf.dtypes.uint64, name=None
)

Равномерное распределение по всему диапазону целочисленного типа.

Другой метод uniform охватывает только диапазон [minval, maxval), который не может охватить весь диапазон dtype, поскольку maxval типа dtype.

Аргументы
shape форма выходного значения.
dtype (необязательно) целочисленный тип, по умолчанию uint64.
name (необязательно) имя узла.
Возвращаемое значение
Тензор со случайными числами требуемой формы.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/random/experimental/Generator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API