我正在努力使以下代码正常工作。它不断进行伯努利试验,直到成功。
import tensorflow as tf
import tensorflow_probability as tfp
tfd = tfp.distributions
def geometric(p):
def cond(_):
return tf.equal(1, tfd.Bernoulli(p).sample())
def body(t):
return tf.add(t, 1)
return tf.while_loop(
cond, # name is automatically generated
body,
[tf.constant(0)]
)
with tf.Session() as sess:
acc = sess.run(geometric(0.001))
print(acc)
上面的代码打印出0
to的值3
,这是没有意义的。我希望它能打印数百个。此外,当我将geometric
呼叫更改为 时geometric(0.000001)
,我仍然得到相同的结果。
谁能指出我上面的代码有什么问题?