Model performance metrics

metric_binary_accuracy(y_true, y_pred)

metric_binary_crossentropy(y_true, y_pred)

metric_categorical_accuracy(y_true, y_pred)

metric_categorical_crossentropy(y_true, y_pred)

metric_cosine_proximity(y_true, y_pred)

metric_hinge(y_true, y_pred)

metric_kullback_leibler_divergence(y_true, y_pred)

metric_mean_absolute_error(y_true, y_pred)

metric_mean_absolute_percentage_error(y_true, y_pred)

metric_mean_squared_error(y_true, y_pred)

metric_mean_squared_logarithmic_error(y_true, y_pred)

metric_poisson(y_true, y_pred)

metric_sparse_categorical_crossentropy(y_true, y_pred)

metric_squared_hinge(y_true, y_pred)

metric_top_k_categorical_accuracy(y_true, y_pred, k = 5)

metric_sparse_top_k_categorical_accuracy(y_true, y_pred, k = 5)



True labels (tensor)


Predictions (tensor of the same shape as y_true).


An integer, number of top elements to consider.


Metric functions are to be supplied in the metrics parameter of the compile() function.

Custom Metrics

You can provide an arbitrary R function as a custom metric. Note that the y_true and y_pred parameters are tensors, so computations on them should use backend tensor functions. See below for an example.

Note that a name ('mean_pred') is provided for the custom metric function. This name is used within training progress output.

Documentation on the available backend tensor functions can be found at

Metrics with Parameters

To use metrics with parameters (e.g. metric_top_k_categorical_accurary()) you should create a custom metric that wraps the call with the parameter. See below for an example.


# create metric using backend tensor functions
K <- backend()
metric_mean_pred <- function(y_true, y_pred) {

model %>% compile(
  optimizer = optimizer_rmsprop(),
  loss = loss_binary_crossentropy,
  metrics = c('accuracy',
              'mean_pred' = metric_mean_pred)

# create custom metric to wrap metric with parameter
metric_top_3_categorical_accuracy <- function(y_true, y_pred) {
  metric_top_k_categorical_accuracy(y_true, y_pred, k = 3)

model %>% compile(
  loss = 'categorical_crossentropy',
  optimizer = optimizer_rmsprop(),
  metrics = c(top_3_categorical_accuracy = metric_top_3_categorical_accuracy)
# }