Qualcuno ha avuto fortuna con la scrittura di una funzione di perdita di AUC personalizzata per Keras utilizzando Theano?Aggiungi AUC come funzione di perdita per keras
La documentazione è qui: http://keras.io/objectives/
codice di esempio è qui: https://github.com/fchollet/keras/blob/master/keras/objectives.py
ho visto c'è un'implementazione in pylearn2, (che in realtà è un wrapper sklearn), ma era in grado di porto questa opzione per utilizzare in Keras
https://github.com/lisa-lab/pylearn2/blob/master/pylearn2/train_extensions/roc_auc.py
Quindi credo che la mia domanda è, qualcuno ha potuto scrivere questa funzione? e saresti disposto a condividere?
È possibile avvolgere facilmente il RocAUCOp definito nella libreria pylearn2. In linea con le firme di keras, sembrerebbe qualcosa di simile (non verificato) 'def roc_auc (y_true, y_hat): return RocAucScoreOp() (y_true, y_hat)' – user2805751
Ho provato a implementare il loro suggerimento di wrapping [il RocAucScoreOp da pylearn2.] (Https : //github.com/lisa-lab/pylearn2/blob/master/pylearn2/train_extensions/roc_auc.py) Quando si tenta di passare questo come funzione di perdita a model.compile ho ricevuto il seguente errore:> AttributeError: 'RocAucScoreOp' l'oggetto non ha attributo 'grad' La documentazione del codice sorgente attorno a RocAucScoreOp in pylearn2 suggerisce che è inteso solo per essere usato sul canale di monitoraggio, piuttosto che come funzione obiettivo/perdita per l'ottimizzazione. Sembra che a meno che non ci sia un modo per definire un gradiente, Keras non può usarlo a – kwarnick
La versione pylearn2 è fondamentalmente una callback per calcolare l'AUC. Non sarai in grado di utilizzare l'AUC come obiettivo di modellazione della rete (in Keras o altrove) perché non è differenziabile. – DanB