我试图用tensorflow-probability
并开始了与很简单的东西:
import tensorflow as tf
import tensorflow_probability as tfp
tf.enable_eager_execution()
tfd = tfp.distributions
poiss = tfd.Poisson(0.8)
poiss.sample(2, seed=1)
#> Out: <tf.Tensor: id=3569, shape=(2,), dtype=float32, numpy=array([0., 0.], dtype=float32)>
poiss.sample(2, seed=1)
#> Out: <tf.Tensor: id=3695, shape=(2,), dtype=float32, numpy=array([1., 0.], dtype=float32)>
poiss.sample(2, seed=1)
#> Out: <tf.Tensor: id=3824, shape=(2,), dtype=float32, numpy=array([2., 2.], dtype=float32)>
poiss.sample(2, seed=1)
#> Out: <tf.Tensor: id=3956, shape=(2,), dtype=float32, numpy=array([0., 1.], dtype=float32)>
我想再次使用相同的种子时,我会得到相同的结果,但不知何故,这不是真的。
我也试过没有eager
执行,但结果仍是不重复的。同样的故事,如果我添加类似tf.set_random_seed(12)
。
我想有一些基本的东西我失踪?
对于那些有兴趣,我在Ubuntu 16.04执行Python 3.5.2与
tensorflow概率== 0.5.0 tensorflow == 1.12.0
对于图形模式确定性输出,您需要同时设置图随机种子(tf.set_random_seed
)和运算随机种子(seed=
在您的样品调用)。
在TFv2随机取样的运作仍然被sorted out。现在,我最了解的是,你可以之前每次调用采样打电话tf.set_random_seed
,并通过取样器seed=
,如果你想在渴望确定性输出。