嗨,我是 tensorflow 的新手,我正在尝试在 tensorflow 中生成随机 Gamma 分布,就像 numpy.random.gamma
我的 numpy 代码是:-
self._lambda = 1 * np.random.gamma(100., 1. / 100, (self.n_topic, self.n_voca))
哪里n_topic=240
和 n_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);
关于python-3.x - 在 tensorflow 中获取随机 Gamma 分布,如 numpy.random.gamma,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42342022/