Мне уже дали пользовательский код метрики c, по которому будет оцениваться моя модель, но они использовали sklearn's
метрики. Я знаю, если у меня есть метри c, я могу использовать его в обратных вызовах, таких как
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy', custom_metric])
ModelCheckpoint(monitor='val_custom_metric',
save_best_only=True,
save_weights_only=True,
mode='max',
verbose=1)
Это проблема с несколькими выходами с 3 метками,
Представления оцениваются с использованием иерархическое усреднение по макросам. Во-первых, для каждого компонента вычисляется стандартное повторное усреднение по макросам (label_1, label_2 или label_3). Окончательный результат представляет собой средневзвешенное значение этих трех показателей, при label_1
указан удвоенный вес. Вы можете повторить метри c с помощью следующего python фрагмента:
, и я не могу понять, как мне реализовать приведенный ниже код в keras-
import numpy as np
import sklearn.metrics
scores = []
for component in ['label_1', 'label_2', 'label_3']:
y_true_subset = solution[solution[component] == component]['target'].values
y_pred_subset = submission[submission[component] == component]['target'].values
scores.append(sklearn.metrics.recall_score(
y_true_subset, y_pred_subset, average='macro'))
final_score = np.average(scores, weights=[2,1,1])
Как я могу преобразовать его в форму для использования в качестве метри c? или более точно, как я могу использовать keras.backend
или реализовать этот код?