您好我是tensorflow的新手,我正试图在tensorflow中生成随机伽玛分布,就像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
我的张量流代码是: -
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
的参数。
答案 0 :(得分:2)
您在分发中设置了不同的形状参数,因此预计它们会有所不同。
值得注意的是,numpy有一个&#34; scale&#34;参数,而TF有一个&#34;反比例&#34;参数。因此必须将其反转以获得相同的分布。
具有匹配分布的Jupyter笔记本示例:
%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);