我正在进行多项式尝试-我有一个概率向量p=[p1, p2, p3]
和一个观测结果向量n=[n1, n2, n3]
。
如何使用TensorFlow找出此类事件的可能性?我也想有一个适用于矩阵的解决方案(即我有一个张量,使得每一行代表概率,一个张量,使得每一行代表结果)。
答案 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
的每个元素都是每个样本的概率。