# berry.objectives¶

berry.objectives module contains a list of loss functions and other evaluation methods for training or testing neural networks.

A small list of loss functions currently defined in berry are given below.

 categorical_crossentropy Categorical crossentropy between an output tensor and a target tensor, where the target is a tensor of the same shape as the output. triplet_loss Triplet loss function.

The following evaluation methods are provided to montior the train or test performance of the neural network.

 accuracy Multi-class zero-one accuracy

## Helper function¶

braid.berry.objectives.get_objective(key, output, target)

Helper function to retrieve the appropriate objective function.

key
: string
Name of the objective function - “categorical_crossentropy”, “accuracy”, etc.
function
The appropriate function given the key.
>>> from berry.objectives import get_objective
>>> # assume: target - output Tensor to predict, output - predicted
>>> # Tensor of the neural network
>>> accuracy_op = get_objective("accuracy", output, target)


## Examples¶

You are encouraged to use the helper function get_objective(). Alternatively, you can use the objective functions directly,

>>> from berry.objectives import categorical_crossentropy
>>> # assume: target - output Tensor to predict, output - predicted Tensor
>>> # of the neural network
>>> loss_op = categorical_crossentropy(output, target)


## Loss Functions¶

braid.berry.objectives.categorical_crossentropy(output, target)

Categorical crossentropy between an output tensor and a target tensor, where the target is a tensor of the same shape as the output.

output
: tf.Tensor
Tensor containing the predicted class probabilities of the neural network.
target
: tf.Tensor
Tensor containing the true classes for the corresponding inputs.
tf.Tensor
Symbolic tensorflow Tensor which performs the loss calculation.

This function expects output to contain class probabilities instead of class prediction scores. Typically, activations.softmax() activation should be used for the layer producing output.

braid.berry.objectives.triplet_loss(Xa, Xp, Xn, margin=1.0)

Triplet loss function.

This function is useful for generating embeddings for images/inputs such that similar inputs lie close in the embedding and different objects lie further away. It takes 3 inputs - anchor (Xa), positive sample (Xp) and negative sample (Xn). Xa and Xp are known to be similar inputs whereas Xa and Xn are different. For more details refer to [1].

output
: tf.Tensor
Tensor containing the predicted class probabilities of the neural network.
target
: tf.Tensor
Tensor containing the true classes for the corresponding inputs.
tf.Tensor
Symbolic tensorflow Tensor which performs the loss calculation.
 [1] Florian Schroff, Dmitry Kalenichenko, James Philbin; “FaceNet: A Unified Embedding for Face Recognition and Clustering”, The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015, pp. 815-823.

## Evaluation Methods¶

braid.berry.objectives.accuracy(output, target)

Multi-class zero-one accuracy

The fraction of samples in the given mini-batch with the correct predicted class.

output
: tf.Tensor
Tensor containing the predicted class probabilities of the neural network.
target
: tf.Tensor
Tensor containing the true classes for the corresponding inputs.
tf.Tensor
Symbolic tensorflow Tensor which performs the accuracy calculation.