tf.random.gamma
| Просмотреть исходный код на GitHub |
Выводит shape выборок из каждого из заданных распределений Гамма.
tf.random.gamma(
shape, alpha, beta=None, dtype=tf.dtypes.float32, seed=None, name=None
)
alpha — это параметр формы, описывающий распределение(я), а beta — это параметр обратной шкалы(ы).
Примечание: Поскольку внутренние вычисления выполняются с использованием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.gamma([10], [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.gamma([7, 5], [0.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.gamma([30], alpha=alpha, beta=beta) # samples has shape [30, 3, 2], with 30 samples each of 3x2 distributions. loss = tf.reduce_mean(tf.square(samples)) dloss_dalpha, dloss_dbeta = tf.gradients(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. Форма выходных выборок, которые нужно получить по каждому параметризованному распределению alpha/beta. |
alpha | Тензор или Python-значение или N-мерный массив типа dtype. alpha предоставляет параметр(ы) формы, описывающий(е) распределение(я) Гамма, из которого нужно извлечь выборку. Должен быть совместим по размеру с beta. |
beta | Тензор или Python-значение или N-мерный массив типа dtype. По умолчанию 1. beta предоставляет параметр(ы) обратной шкалы распределения(ий) Гамма, из которого нужно извлечь выборку. Должен быть совместим по размеру с alpha. |
dtype | Тип alpha, beta и выхода: float16, float32, или float64. |
seed | Целое число Python. Используется для создания случайного начального значения для распределений. См. tf.random.set_seed для поведения. |
name | Необязательное имя операции. |
| Возвращает | |
|---|---|
samples | а Tensor формы tf.concat([shape, tf.shape(alpha + beta)], axis=0) со значениями типа dtype. |
Ссылки:
Неявные градиенты перепараметризации: Figurnov et al., 2018 (pdf)
© 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/r2.4/api_docs/python/tf/random/gamma