两个可能包含零的概率向量的Tensorflow对数似然

时间:2017-05-09 12:43:43

标签: python tensorflow log-likelihood

假设我有两个张量,p1p2在相同形状的张量流中包含概率,其中一些可能是零或一个。他们优雅的方式是逐点计算对数似然:p1*log(p2) + (1-p1)*log(1-p2)

使用张量流函数天真地实现它

p1*tf.log(p2) + (1-p1)*tf.log(1-p2)

冒险调用0*tf.log(0)会产生nan

2 个答案:

答案 0 :(得分:1)

作为最初的黑客(大多数是更好的解决方案)我在log内添加了一个epsilon:

eps = 1e-10
p1*tf.log(p2+eps) + (1-p1)*tf.log(1-p2+eps)

会阻止log(0)

答案 1 :(得分:0)

请查看CRF。它包含Log Likelihood的实现。特别是你可以看一下implementation