Open In App

Sigmoid Cross Entropy function of TensorFlow

Last Updated : 01 Dec, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

TensorFlow is an open-source Machine Learning framework used to develop models. While developing models we use many functions to check the model’s accuracy and loss. For a model to be in good condition, loss calculation is a must since loss acts like a penalty. The lower the loss better will be the working of the model.  

There are many kinds of loss functions. One such function is the Sigmoid cross entropy function of TensorFlow. The sigmoid function or logistic function is the function that generates an S-shaped curve. This function is used to predict probabilities therefore, the range of this function lies between 0 and 1.

Cross Entropy loss is the difference between the actual and the expected outputs. This is also known as the log loss function and is one of the most valuable techniques in the field of Machine Learning. 

sigmoid_cross_entropy_with_logits

This is a function of Tensorflow version 2 which is used for soft binary labels. A soft label is one that has a measure of likelihood. This function can also be used for hard labels. It measures the probability of error in tasks that have two outcomes.

Python3




import tensorflow as tf
  
# type list
input = [1., 2., 3., 4., 5.89]
output = [2, 1, 3, 4, 5.9]
  
# conversion to tensor
# input means actual
input = tf.convert_to_tensor(input,
                             dtype=tf.float32)
# Output means predicted
output = tf.convert_to_tensor(output,
                              dtype=tf.float32)
  
# calculating the deviation between
# actual and predicted values
x = tf.nn.sigmoid_cross_entropy_with_logits(
    labels=output, logits=input).numpy()
  
print(x)


Output:

[ -0.68673825   0.12692802  -5.9514127  -11.98185    -28.858236  ]

We can also compute sigmoid cross entropy loss between two 4D tensors using the sigmoid_cross_entropy_with_logits() function.

Python3




import tensorflow as tf
  
# type list
input = [[[[9], [8]], [[7], [5]]]]
output = [[[[1], [2]], [[3], [4]]]]
  
# conversion to tensor
input = tf.convert_to_tensor(input,
                             dtype=tf.float32)
output = tf.convert_to_tensor(output,
                              dtype=tf.float32)
  
# calculating deviation in actual and predicted values
x = tf.nn.sigmoid_cross_entropy_with_logits(
    labels=output, logits=input).numpy()
  
print(x)


Output:

[[[[ 1.2340219e-04]
   [-7.9996648e+00]]
   
  [[-1.3999088e+01]
   [-1.4993284e+01]]]]

Sigmoid Cross Entropy

This is the function that was supported by Tensorflow version 2 which is strongly integrated with Keras. It basically calculates the loss between the actual output and the predicted output. This function can be used for Binary outcomes. The syntax is

Suppose there are two tensors y_pred and y_true. The formula for loss is calculated as

loss = -(y_true log(sigmoid(y_pred)) + (1 - y_true) log(1 - sigmoid(y_pred)))

However, this function is supported in neither of the versions of  Tensorflow in Python.

Python3




import tensorflow as tf
from tensorflow.compat.v1.losses \
import sigmoid_cross_entropy
  
logits = tf.constant([[0, 1],
                      [1, 5],
                      [2, -4]], dtype=tf.float32)
y_true = tf.constant([[1, 1],
                      [1, 0],
                      [2, 0]], dtype=tf.float32)
  
loss = sigmoid_cross_entropy(multi_class_labels=y_true,
                             logits=logits).numpy()
  
print(loss)


Output:

0.74524397

In the above code logits are basically the input tensor and  y_true is the multiclass label. Then the loss function is called that calculates the loss. Since the output is also a tensor, it is converted to a tensor.

Comparison between the three Sigmoid Cross Entropy Functions

Now as we have seen multiple versions of the cross-entropy function it becomes sometimes mind-boggling to remember which function is suited for which kind of task. So, let’s try to summarise this in a tabular format.

sigmoid_cross_entropy_with_logits SigmoidCrossEntropyLoss sigmoid_cross_entropy
This function is used for soft binary labels. This function basically calculates the difference between the actual and the predicted output. This function is used for multiclass labels.
It is supported in Tensorflow Version 2. Currently, this function is not supported in any of the Tensorflow versions. This function is compatible with Tensorflow version 1.
It measures the element-wise probability error classification, therefore, returns an array of element-wise. It returns a single value. It returns a single value.


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads