tf.multinomial
工作怎么样?这里说它是"从多项分布中抽取样本".那是什么意思?
如果您执行的实验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随机向量的第i个条目X
取值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