Public Constructors
Public Methods
static <T extends TNumber> Operand<T> |
sigmoidCrossEntropyWithLogits(Scope scope, Operand<T> labels, Operand<T> logits)
Computes sigmoid cross entropy given
logits . |
Inherited Methods
Public Constructors
public SigmoidCrossEntropyWithLogits ()
Public Methods
public static Operand<T> sigmoidCrossEntropyWithLogits (Scope scope, Operand<T> labels, Operand<T> logits)
Computes sigmoid cross entropy given logits
.
Measures the probability error in discrete classification tasks in which each class is independent and not mutually exclusive. For instance, one could perform multilabel classification where a picture can contain both an elephant and a dog at the same time.
For brevity, let x = logits
, z = labels
. The logistic loss in
pseudo-code is
z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x)) = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x))) = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x))) = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x)) = (1 - z) * x + log(1 + exp(-x)) = x - x * z + log(1 + exp(-x))
For x < 0
, to avoid overflow in exp(-x)
, we reformulate the above
x - x * z + log(1 + exp(-x)) = log(exp(x)) - x * z + log(1 + exp(-x)) = - x * z + log(1 + exp(x))
Hence, to ensure stability and avoid overflow, the implementation uses this equivalent formulation
max(x, 0) - x * z + log(1 + exp(-abs(x)))
logits and labels
must have the same type and shape.
Parameters
scope | The TensorFlow scope |
---|---|
labels | the labels |
logits | the logits of type float32 or float64 |
Returns
- the component-wise logistic losses.
Throws
IllegalArgumentException | if logits' and labels' do not have the same shape |
---|