2017-01-10 65 views
0

因此,我已寫入其由如下多級分類的網絡:與to_categorical -last層轉化 -y_labels使用S形函數具有3個神經元作爲我的類 -model編譯使用categorical_crossentropy作爲損失函數 所以我用如何使用sklearn的keras模型的分類報告?

model.predict_classes(x_test) 

,然後我把它作爲

classification_report(y_test,pred) 

y_test具有to_categorical 形式,我得到以下ERR或:

ValueError: Mix type of y not allowed, got types set(['binary', 'multilabel-indicator']) 

我的問題是我如何將它轉換回來以便使用它呢?

回答

2

錯誤只是表示y_testpred是不同的類型。在multiclass.py中檢查功能type_of_target。如此處所示,y之一是類別的指示符,另一個是類別向量。你可以通過打印形狀來推斷哪一個是y_test.shape , pred.shape

由於您使用的是model.predict_classes而不是model.predict,所以您輸出的model.predict_classes將只是類而不是類向量。

因此,無論你需要將它們轉換之一:

# class --> class vector 
from keras.utils import np_utils 
x_vec = np_utils.to_categorical(x, nb_classes) 

# class vector --> class 
x = x_vec.argmax(axis=-1) 
+0

感謝您從您的評論非常多。這只是一個簡單的解決方案,雖然我花了一些時間。再次感謝 –

+0

沒問題。如果有幫助,你能接受答案嗎? – indraforyou