Tensorflow:多项式尝试中结果的概率

时间:2018-08-06 12:06:19

标签: python python-3.x tensorflow distribution

我正在进行多项式尝试-我有一个概率向量p=[p1, p2, p3]和一个观测结果向量n=[n1, n2, n3]

如何使用TensorFlow找出此类事件的可能性?我也想有一个适用于矩阵的解决方案(即我有一个张量,使得每一行代表概率,一个张量,使得每一行代表结果)。

1 个答案:

答案 0 :(得分:1)

您可以使用tf.distributions.Multinomial

import tensorflow as tf

probs = tf.constant([.2, .4, .6], tf.float32)
counts = tf.constant([1, 2, 3], tf.float32)
total_count = tf.reduce_sum(counts)
multinomial = tf.distributions.Multinomial(total_count, probs=probs)
prob_counts = multinomial.prob(counts)
with tf.Session() as sess:
    print(sess.run(prob_counts))

输出:

0.13888888

您还可以像这样一次操作多个发行版:

import tensorflow as tf

probs = tf.placeholder(tf.float32, [None, 3])
counts = tf.placeholder(tf.float32, [None, 3])
total_counts = tf.reduce_sum(counts, axis=1)
multinomial = tf.distributions.Multinomial(total_counts, probs=probs)
prob_counts = multinomial.prob(counts)

在这种情况下,probs的每一行都是概率分布,counts的每一行都是分布样本,prob_counts的每个元素都是每个样本的概率。