我想創建一個自定義目標函數來訓練Keras深層網絡。我正在研究不平衡數據的分類,我在scikit-learn中使用了很多F1分數。因此,我不得不顛倒F1度量的想法(1 - F1分)使用它作爲損失函數/目標爲Keras減少而訓練:Keras自定義目標需要張量評估
(from sklearn.metric import f1_score)
def F1Loss(y_true, y_pred):
return 1. - f1_score(y_true, y_pred)
然而,從scikit學習這種f1_score
方法需要numpy的數組或列表來計算F1分數。我發現張量需要使用.eval()
對他們的numpy陣列對應物進行評估,這需要一個TensorFlow會話來執行此任務。
我不知道Keras使用的會話對象。我已經嘗試使用下面的代碼,假設Keras後端在某個地方定義了自己的會話對象,但這也不起作用。
from keras import backend as K
K.eval(y_true)
不可否認,這是一個在黑暗中拍攝,因爲我真的不明白Keras的更深層次的運作或Tensorflow一個時刻。
我的問題是:我如何評價y_true
和y_pred
張量到他們的numpy數組對應?
這非常有幫助!我自己也不會想到這些問題。謝謝。我會尋找另一種解決方案。 – TBZ92