изменения в показателях обучения после изменения кодировки меток - PullRequest
0 голосов
/ 31 октября 2018

Я тренирую бинарный классификатор с использованием Keras.

model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=[auroc,'accuracy'])

Я использую собственную метрику, AUROC. как здесь

import tensorflow as tf
from sklearn.metrics import roc_auc_score  
def auroc(y_true, y_pred):
    return tf.py_func(roc_auc_score, (y_true, y_pred), tf.double)

Пока что я закодировал свою цель как горячее кодирование и у меня был последний слой как

from keras.utils import to_categorical
y = to_categorical(y)
[...]
model.add(Dense(2, activation='sigmoid'))

Я узнал, что в принципе здесь Keras binary_crossentropy vs категорическая_crossentropy производительность? Я не должен выполнять категориальное кодирование, и я должен предсказывать только один класс, используя

# y = to_categorical(y)
[...]
model.add(Dense(1, activation='sigmoid'))

Однако, если я применю это и только это изменение, моя тренировка auroc резко изменится с высоких 0,90 до 0,50. Еще более странно, что val_auroc потеря кажется незатронутой

Как это случилось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...