tf.multinomial如何工作?声明Here“从多项分布中抽取样本”。这意味着什么?

最佳答案

如果您执行的实验n时间只能有两个结果(成功或失败,头部或尾部等),那么获得两个结果之一(成功)的次数就是一个二项式随机变量。

换句话说,如果您执行的实验只能有两个结果(成功或失败,头部或尾部等),则随机变量在成功的情况下为1,在失败的情况下为0。伯努利随机变量。



如果您执行的实验n次可能具有K个结果(其中K可以是任何自然数),并且用X_i表示获得第i个结果的次数,则随机向量X定义为


  X = [X_1,X_2,X_3,...,X_K]


是多项式随机向量。

换句话说,如果您执行的实验可能具有K个结果,并且用X_i表示一个随机变量,如果您获得第i个结果,则该变量的值为1,否则为0,则随机向量X定义为


  X = [X_1,X_2,X_3,...,X_K]


是Multinoulli随机向量。换句话说,当获得第i个结果时,Multinoulli随机向量X的第i个条目的值为1,而所有其他条目的值为0。

因此,多项式分布可以看作是相互独立的Multinoulli随机变量的总和。

K可能结果的概率将表示为


  p_1,p_2,p_3,...,p_K




Tensorflow中的一个例子

In [171]: isess = tf.InteractiveSession()

In [172]: prob = [[.1, .2, .7], [.3, .3, .4]]  # Shape [2, 3]
     ...: dist = tf.distributions.Multinomial(total_count=[4., 5], probs=prob)
     ...:
     ...: counts = [[2., 1, 1], [3, 1, 1]]
     ...: isess.run(dist.prob(counts))  # Shape [2]
     ...:
Out[172]: array([ 0.0168    ,  0.06479999], dtype=float32)


注意:多项式与
K = 2时的二项式分布。有关更多信息,请参考:tf.distributions.Multinomial

关于tensorflow - tf。多项式如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48390958/

10-12 17:39