阅读(5.1k) 书签 (0)

TensorFlow函数教程:tf.nn.log_poisson_loss

2019-01-31 13:49 更新

tf.nn.log_poisson_loss函数

tf.nn.log_poisson_loss(
    targets,
    log_input,
    compute_full_loss=False,
    name=None
)

定义在:tensorflow/python/ops/nn_impl.py.

请参阅指南:神经网络>损失操作

在给定log_input的情况下计算log Poisson损失.

在假设目标具有Poisson分布的情况下,给出预测与目标之间的对数似然损失(log-likelihood loss).

注意:默认情况下,这不是确切的损失,而是损失减去常数项[log(z!)].这对优化没有影响,但是相对损失比较不能很好地发挥作用.

要计算log阶乘项的近似值,请指定compute_full_loss = True以启用Stirling的近似值.

为简洁起见,让c = log(x) = log_input,z = targets.log Poisson损失是:

  -log(exp(-x) * (x^z) / z!)
= -log(exp(-x) * (x^z)) + log(z!)
~ -log(exp(-x)) - log(x^z) [+ z * log(z) - z + 0.5 * log(2 * pi * z)]
    [ Note the second term is the Stirling's Approximation for log(z!).
      It is invariant to x and does not affect optimization, though
      important for correct relative loss comparisons. It is only
      computed when compute_full_loss == True. ]
= x - z * log(x) [+ z * log(z) - z + 0.5 * log(2 * pi * z)]
= exp(c) - z * c [+ z * log(z) - z + 0.5 * log(2 * pi * z)]

参数:

  • targets:一个Tensor,与log_input具有相同的类型和shape.
  • log_input:一个Tensor,类型为float32或float64.
  • compute_full_loss:是否计算全部损失.如果为false,则删除常数项以支持更有效的优化.
  • name:操作的名称(可选).

返回:

一个与log_input(有分量逻辑损失)具有相同shape的Tensor.

可能引发的异常:

  • ValueError:如果log_input和targets没有相同的shape.