2017-02-20 2 views
2

Привет Я новичок в tensorflow, и я пытаюсь создать случайное распределение гамма в tensorflow так же, как numpy.random.gammaПолучить случайное распределение гамма в 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

Мой 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.

ответ

2

Вы устанавливаете различные параметры формы в своем дистрибутиве, поэтому ожидается, что они будут отличаться.

Остерегайтесь того, что numpy имеет параметр «масштаб», в то время как TF имеет параметр «обратного масштаба». Поэтому нужно перевернуть, чтобы получить тот же дистрибутив.

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); 

Histogram plot of results

+0

спасибо. Это сработало – Rahul

Смежные вопросы