更改标签编码后训练指标的变化

时间:2018-10-31 16:12:16

标签: python tensorflow encoding keras

我正在使用Keras训练二进制分类器。

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

我使用自定义指标AUROC。as in here

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 categorical_crossentropy performance?我不应该执行分类编码,而应该使用

只预测一个类
# y = to_categorical(y)
[...]
model.add(Dense(1, activation='sigmoid'))

但是,如果我应用此方法,并且只有此更改,我的训练auroc就会从0.90高变为0.50。更奇怪的是,val_auroc的损失似乎不受影响

那是怎么发生的?

0 个答案:

没有答案