從伽馬分布輸出確定性偽隨機值。
用法
tf.random.stateless_gamma(
shape, seed, alpha, beta=None, dtype=tf.dtypes.float32, name=None
)
參數
-
shape
一維整數張量或 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] 的 gamma 分布中獨立抽取的。
生成的值遵循具有指定濃度 (alpha
) 和反比例 (beta
) 參數的伽馬分布。
這是tf.random.gamma
的無狀態版本:如果使用相同的種子和形狀運行兩次,它將產生相同的偽隨機數。輸出在同一硬件(以及 CPU 和 GPU 之間)上的多次運行中是一致的,但可能會在 TensorFlow 版本之間或在非 CPU/GPU 硬件上發生變化。
在 stateless_gamma
和 gamma
之間對 shape
參數的解釋存在細微差別:在 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
。
樣本是可微的 w.r.t.阿爾法和貝塔。導數是使用 (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
相關用法
- Python tf.random.stateless_uniform用法及代碼示例
- Python tf.random.stateless_parameterized_truncated_normal用法及代碼示例
- Python tf.random.stateless_poisson用法及代碼示例
- Python tf.random.stateless_binomial用法及代碼示例
- Python tf.random.stateless_categorical用法及代碼示例
- Python tf.random.shuffle用法及代碼示例
- Python tf.random.set_global_generator用法及代碼示例
- Python tf.random.set_seed用法及代碼示例
- Python tf.random.truncated_normal用法及代碼示例
- Python tf.random.Generator用法及代碼示例
- Python tf.random.Generator.binomial用法及代碼示例
- Python tf.random.normal用法及代碼示例
- Python tf.random.experimental.stateless_split用法及代碼示例
- Python tf.random.uniform用法及代碼示例
- Python tf.random.categorical用法及代碼示例
- Python tf.random.experimental.stateless_fold_in用法及代碼示例
- Python tf.random.Generator.make_seeds用法及代碼示例
- Python tf.random.poisson用法及代碼示例
- Python tf.random.gamma用法及代碼示例
- Python tf.random.create_rng_state用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.random.stateless_gamma。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。