Skip to contents

Compute AUC score as additional metric. If model has several output neurons with binary crossentropy loss, will use the average score.

Usage

auc_wrapper(model_output_size, loss = "binary_crossentropy")

Arguments

model_output_size

Number of neurons in model output layer.

loss

Loss function of model, for which metric will be applied to; must be "binary_crossentropy" or "categorical_crossentropy".

Value

A keras metric.

Examples

if (FALSE) { # reticulate::py_module_available("tensorflow")

y_true <- c(1,0,0,1,1,0,1,0,0) %>% matrix(ncol = 3)
y_pred <- c(0.9,0.05,0.05,0.9,0.05,0.05,0.9,0.05,0.05) %>% matrix(ncol = 3)

auc_metric <- auc_wrapper(3L, "binary_crossentropy")

auc_metric$update_state(y_true, y_pred)
auc_metric$result()  

# add metric to a model
num_targets <- 4
model <- create_model_lstm_cnn(maxlen = 20,
                               layer_lstm = 8,
                               bal_acc = FALSE,
                               last_layer_activation = "sigmoid",
                               loss_fn = "binary_crossentropy",
                               layer_dense = c(8, num_targets))

auc_metric <- auc_wrapper(num_targets, loss = model$loss)
model %>% keras::compile(loss = model$loss, 
                         optimizer = model$optimizer,
                         metrics = c(model$metrics, auc_metric))
}