使用种子在tensorflow概率抽样

问题描述 投票:0回答:1

我试图用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

tensorflow random tensorflow-probability
1个回答
1
投票

对于图形模式确定性输出,您需要同时设置图随机种子(tf.set_random_seed)和运算随机种子(seed=在您的样品调用)。

在TFv2随机取样的运作仍然被sorted out。现在,我最了解的是,你可以之前每次调用采样打电话tf.set_random_seed,并通过取样器seed=,如果你想在渴望确定性输出。

© www.soinside.com 2019 - 2024. All rights reserved.