Since Keras version 2.3.0
, it provides all metrics available in this package.
It's preferrable to use metrics from the original Keras package.
This package will be maintained for older version of Keras (<2.3.0
).
This package provides metrics for evaluation of Keras classification models. The metrics are safe to use for batch-based model evaluation.
To install the package from the PyPi repository you can execute the following command:
pip install keras-metrics
The usage of the package is simple:
import keras
import keras_metrics as km
model = models.Sequential()
model.add(keras.layers.Dense(1, activation="sigmoid", input_dim=2))
model.add(keras.layers.Dense(1, activation="softmax"))
model.compile(optimizer="sgd",
loss="binary_crossentropy",
metrics=[km.binary_precision(), km.binary_recall()])
Similar configuration for multi-label binary crossentropy:
import keras
import keras_metrics as km
model = models.Sequential()
model.add(keras.layers.Dense(1, activation="sigmoid", input_dim=2))
model.add(keras.layers.Dense(2, activation="softmax"))
# Calculate precision for the second label.
precision = km.binary_precision(label=1)
# Calculate recall for the first label.
recall = km.binary_recall(label=0)
model.compile(optimizer="sgd",
loss="binary_crossentropy",
metrics=[precision, recall])
Keras metrics package also supports metrics for categorical crossentropy and sparse categorical crossentropy:
import keras_metrics as km
c_precision = km.categorical_precision()
sc_precision = km.sparse_categorical_precision()
# ...
Tensorflow library provides the keras
package as parts of its API, in
order to use keras_metrics
with Tensorflow Keras, you are advised to
perform model training with initialized global variables:
import numpy as np
import keras_metrics as km
import tensorflow as tf
import tensorflow.keras as keras
model = keras.Sequential()
model.add(keras.layers.Dense(1, activation="softmax"))
model.compile(optimizer="sgd",
loss="binary_crossentropy",
metrics=[km.binary_true_positive()])
x = np.array([[0], [1], [0], [1]])
y = np.array([1, 0, 1, 0])
# Wrap model.fit into the session with global
# variables initialization.
with tf.Session() as s:
s.run(tf.global_variables_initializer())
model.fit(x=x, y=y)