tenorflow. while_loop с образцом из tenorsflow_distribution в условии - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь заставить работать следующий код.Он продолжает выполнять испытания Бернулли до тех пор, пока одно из них не будет успешным.

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 до 3, что не имеет смысла.Я ожидаю, что это напечатает что-то сотнями.Кроме того, когда я изменяю вызов geometric на geometric(0.000001), я все равно получаю тот же результат.

Кто-нибудь может указать, что не так с моим кодом выше?

1 Ответ

0 голосов
/ 14 ноября 2018

Есть ли у вас время перевернутого состояния? Я думаю, что вы хотите, пока не 1 (пока 0)

...