Sampling without replacement from a given non-uniform distribution in TensorFlow

前端 未结 2 465
遥遥无期
遥遥无期 2021-01-12 04:42

I\'m looking for something similar to numpy.random.choice(range(3),replacement=False,size=2,p=[0.1,0.2,0.7])
in TensorFlow.

The closest Op

2条回答
  •  不思量自难忘°
    2021-01-12 05:38

    Yes, there is. See here and here for some background information. The solution is:

    z = -tf.log(-tf.log(tf.random_uniform(tf.shape(p),0,1))) 
    _, indices = tf.nn.top_k(tf.log(p) + z, size)
    

提交回复
热议问题