Spec-Zone.ru › TensorFlow 2.9

tf.random.stateless_gamma

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

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

Совместимые псевдонимы для миграции

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

tf.compat.v1.random.stateless_gamma

tf.random.stateless_gamma(
    shape,
    seed,
    alpha,
    beta=None,
    dtype=tf.dtypes.float32,
    name=None
)

Сгенерированные значения следуют гамма-распределению со значениями концентрации (alpha) и обратной шкалы (beta) параметров.

Это бессостоятельная версия tf.random.gamma: если ее запустить дважды с одинаковыми семенами и формами, она сгенерирует одни и те же псевдослучайные числа. Вывод согласован в разных запусках на одном оборудовании (и между процессором и графическим процессором), но может изменяться между версиями TensorFlow или на оборудовании, не являющемся процессором/графическим процессором.

Существует небольшое различие в интерпретации параметра shape между stateless_gamma и gamma: в gamma, параметр shape всегда добавляется в начало формы широковещательного преобразования alpha с beta; тогда как в stateless_gamma параметр shape всегда должен охватывать формы каждого из alpha и beta (которые должны быть широковещательно совместимыми для соответствия хвостовым измерениям shape).

Примечание: Поскольку внутренние вычисления выполняются с использованием float64 и приведение типов имеет семантику floor, мы должны вручную сопоставить нулевые результаты с наименьшим возможным положительным значением с плавающей точкой, т.е. np.finfo(dtype).tiny. Это означает, что np.finfo(dtype).tiny встречается чаще, чем следовало бы. Этот сдвиг может произойти только для малых значений alpha, т.е. alpha << 1 или больших значений beta, т.е. beta >> 1.

Выборка дифференцируема по отношению к alpha и beta. Производные вычисляются с использованием метода, описанного в (Figurnov et al., 2018).

Пример:

samples = tf.random.stateless_gamma([10, 2], seed=[12, 34], alpha=[0.5, 1.5])
# samples has shape [10, 2], where each slice [:, 0] and [:, 1] represents
# the samples drawn from each distribution

samples = tf.random.stateless_gamma([7, 5, 2], seed=[12, 34], alpha=[.5, 1.5])
# samples has shape [7, 5, 2], where each slice [:, :, 0] and [:, :, 1]
# represents the 7x5 samples drawn from each of the two distributions

alpha = tf.constant([[1.], [3.], [5.]])
beta = tf.constant([[3., 4.]])
samples = tf.random.stateless_gamma(
    [30, 3, 2], seed=[12, 34], alpha=alpha, beta=beta)
# samples has shape [30, 3, 2], with 30 samples each of 3x2 distributions.

with tf.GradientTape() as tape:
  tape.watch([alpha, beta])
  loss = tf.reduce_mean(tf.square(tf.random.stateless_gamma(
      [30, 3, 2], seed=[12, 34], alpha=alpha, beta=beta)))
dloss_dalpha, dloss_dbeta = tape.gradient(loss, [alpha, beta])
# unbiased stochastic derivatives of the loss function
alpha.shape == dloss_dalpha.shape  # True
beta.shape == dloss_dbeta.shape  # True
Аргументы
shape Целочисленный тензор 1-D или Python-массив. Форма тензора вывода.
seed Тензор формы [2], семя генератора псевдослучайных чисел. Должен иметь тип int32 или int64. (При использовании XLA, разрешен только int32.)
alpha Тензор. Параметр концентрации гамма-распределения. Должен быть совместим с beta, и с правыми измерениями shape.
beta Тензор. Параметр обратной шкалы гамма-распределения. Должен быть совместим с alpha и с правыми измерениями shape.
dtype Тип данных с плавающей точкой для alpha, beta, и вывода.
name Имя операции (необязательно).
Возвращаемое значение
samples Тензор заданной формы, заполненный случайными значениями из гамма-распределения. Для каждого i, каждый `samples[..., i]` — независимое значение из гамма-распределения с концентрацией alpha[i] и масштабом beta[i].

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/random/stateless_gamma

Spec-Zone.ru

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