0

我正在努力使以下代码正常工作。它不断进行伯努利试验,直到成功。

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)

上面的代码打印出0to的值3,这是没有意义的。我希望它能打印数百个。此外,当我将geometric呼叫更改为 时geometric(0.000001),我仍然得到相同的结果。

谁能指出我上面的代码有什么问题?

4

1 回答 1

1

您是否有反转条件?我想你想要 while not 1 (while 0)

于 2018-11-14T17:13:59.513 回答