Я хотел бы создать пользовательскую функцию, чтобы исключить некоторые конкретные случаи, когда предсказания меток неверны, но должны быть исключены в значении точности.
Если прогноз и true_value принадлежат списку, то не рассматривайте его как ошибку. В приведенном ниже примере, если y_true! = Y_pred, но оба принадлежат списку меток, это не считается ошибкой.
со значением numpy можно выразить как:
def excluding_list( y_true, y_pred):
labels = [ 1, 5, 9, 11]
errors = (y_true != y_pred) & ~(np.isin( y_true, labels) & np.isin(y_pred, labels))
acc = 1- errors.sum()/len(errors)
return acc
Я не знаю, как управлять этой операцией с помощью Keras backend (тензор потока), чтобы иметь возможность компилировать:
import keras.backend as K
model.compile(
optimizer = ...
loss= 'sparse_categorical_crossentropy',
metrics= ['accuracy', excluding_list ]
)