2015-09-11 31 views
5

Theano kullanarak Keras için özel bir AUC kayıp işlevi yazma konusunda herhangi bir şansı oldu mu?AUC, keras için kayıp fonksiyonu olarak ekle

dokümanları buradadır: http://keras.io/objectives/

Örnek kod burada: Ben (gerçekten sklearn etrafında sarıcı) pylearn2 bir uygulama vardır gördüm ama limana bu kullanmak edemedi https://github.com/fchollet/keras/blob/master/keras/objectives.py

keras

yılında

https://github.com/lisa-lab/pylearn2/blob/master/pylearn2/train_extensions/roc_auc.py

Yani ben, benim sorum tahmin herkes bu fonksiyonu yazmak mümkün olmuştur? ve paylaşmaya istekli olur musun? AUC, ayırt edilemez, dolayısıyla bir değişiklik yapmadan, bir kayıp işlevi olarak kullanamazsınız.

+0

Kolayca pylearn2 kütüphanesinde tanımlanan RocAUCOp'u sarabilirsiniz. Keras imzaları ile uyumlu olarak, (test edilmemiş) def (roc_auc) (y_true, y_hat) gibi bir şeye benzeyecektir: dönüş RocAucScoreOp() (y_true, y_hat) ' – user2805751

+2

[RocAucScoreOp'dan pylearn2.] (Https. : //github.com/lisa-lab/pylearn2/blob/master/pylearn2/train_extensions/roc_auc.py) Bunu, model.compile için kayıp işlevi olarak iletmeye çalışırken aşağıdaki hatayı aldım:> AttributeError: 'RocAucScoreOp' nesnenin "grad" özelliği yoktur. RocaucScoreOp'un pylearn2'deki kaynak kod dökümantasyonu, yalnızca optimizasyon için objektif/kayıp işlevi yerine izleme kanalında kullanılması için tasarlandığını gösterir. Bir gradyan tanımlamak için bir yol olmadığı sürece, Keras bunu bir – kwarnick

+1

kullanamaz. Pylearn2 sürümü temelde AUC'yi hesaplamak için bir geri aramadır. AUC'yi bir ağın modelleme hedefi olarak (Keras'ta veya başka bir yerde) kullanamazsınız, çünkü bu ayırt edilemez değildir. – DanB

cevap

5

AUC'yi en üst düzeye çıkarmak için algoritmalar üzerinde some work oldu, ancak sadece düzenli çapraz entropi/log olabilirlik kaybını kullanmanızı öneriyorum.