Skip to content
Advertisement

Custom metric for Keras model, using Tensorflow 2.1

I would like to add a custom metric to model with Keras, I’m debugging my working code and I don’t find a method to do the operations I need.

The problem could be described as a multi classification trough logistic multinomial regression. The custom metric I would like to implement is this:

JavaScript

Where Number_of_Classes must be calculate from batch, i.e something like np.unique(y_true).count() and and every summation item would be something like

JavaScript

In terms of confusion matrix (in the minimal form of 2 variables)

JavaScript

The formula would be 0.5*(15)/(15+12) + 0.5*(1/(1+3))=0.4027

The code could be something like

JavaScript

My preprocessed data is a numpy array like x=[v1,v2,v3,v4,...,vn], and my objetive column is a nompy array y=[1, 0, 1, 0, 1, 0, 0, 1 ,..., 0, 1]

then, they are converted to tensors:

JavaScript

Then, they are converted to tensorflow dataset objects:

JavaScript

Later, I take a iterator:

JavaScript

and last, I take one element of iterator and train

JavaScript

So, since objects are dataset iterators, I can’t find functions to operate them as I would like, in order to get the custom metric described.

type(y_pred)

Advertisement

Answer

So you want calculate average recall wrt multiclass in the batch, here is my example code using numpy and tensorflow:

JavaScript

Outputs:

JavaScript

Implement using only tensorflow:

JavaScript

Outputs:

JavaScript

Reference:

tf.math.confusion_matrix

Calculate precision and recall for multiclass classification using confusion matrix

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement