python-3.x - 在 tensorflow 中获取随机 Gamma 分布,如 numpy.random.gamma

标签 python-3.x numpy tensorflow

嗨,我是 tensorflow 的新手,我正在尝试在 tensorflow 中生成随机 Gamma 分布,就像 numpy.random.gamma

我的 numpy 代码是:-

self._lambda = 1 * np.random.gamma(100., 1. / 100, (self.n_topic, self.n_voca))

哪里n_topic=240n_voca=198

我的 tensorflow 代码是:-

 self._tf_lambda = tf.random_gamma((self.n_topic, self.n_voca),1, dtype=tf.float32, seed=0, name='_tf_lambda')

这是一个正确的实现吗?我相信我没能理解 tf.random_gamma 的参数变成了self._lambda <> self.tf_lambda .

最佳答案

您在分布中设置了不同的形状参数,因此预计它们会有所不同。

需要注意的一件事是 numpy 有一个“scale”参数,而 TF 有一个“inverse scale”参数。因此必须反转才能获得相同的分布。

具有匹配分布的 Jupyter notebook 示例:

%matplotlib inline
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

size = (50000,)
shape_parameter = 1.5
scale_parameter = 0.5
bins = np.linspace(-1, 5, 30)

np_res = np.random.gamma(shape=shape_parameter, scale=scale_parameter, size=size)

# Note the 1/scale_parameter here

tf_op = tf.random_gamma(shape=size, alpha=shape_parameter, beta=1/scale_parameter)
with tf.Session() as sess:
    tf_res = sess.run(tf_op)

plt.hist(tf_res, bins=bins, alpha=0.5);
plt.hist(np_res, bins=bins, alpha=0.5);

Histogram plot of results

关于python-3.x - 在 tensorflow 中获取随机 Gamma 分布,如 numpy.random.gamma,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42342022/

相关文章:

python - 如何在张量板中使用过滤器标签?

python - PyCharm 未列出 python3.6

python-3.x - 无法使用 .png 文件在 Pygame 上设置图标

python - django rest 单线程/阻塞 View

python - numpy 加法是如何工作的?

python - tensorflow TFRecord k-hot 编码

python - 如何比较音频 channel 与 FFmpeg 的差异?

python - 添加到多索引 DataFrame 时如何维护 lexsort 状态?

python - 复杂数据的曲线拟合

python - 使用 GPU 与 CPU 计算损失的 tensorflow