Kerasディープネットをトレーニングするためのカスタム目的関数を作成したい。私は不均衡なデータの分類を研究しています。私はscikit-learnでF1スコアを多く使用しています。Kerasのカスタム目的にはTensorの評価が必要
(from sklearn.metric import f1_score)
def F1Loss(y_true, y_pred):
return 1. - f1_score(y_true, y_pred)
しかし、scikit-学ぶから、このf1_score
方法はnumpyのを必要とします。トレーニングしながら、最小限に抑えるためにKerasのための損失関数/目的としてそれを使用するために - 私は、したがって、F1のメトリック(F1スコア1)を反転するというアイデアを持っていました配列またはリストを使用してF1スコアを計算します。私は、Tensorsが.eval()
を使用して、それらの数が少ない配列の相手に評価される必要があることを発見しました。このタスクを実行するには、TensorFlowセッションが必要です。
Kerasが使用するセッションオブジェクトがわかりません。私はKerasバックエンドがどこかで定義された独自のセッションオブジェクトを持っていると仮定して、以下のコードを試してみましたが、これもうまくいきませんでした。
from keras import backend as K
K.eval(y_true)
確かに、これは瞬間Tensorflow私は本当にKerasの深い仕組みを理解していないので、暗闇の中でのショットでしたか。
私の質問は次のとおりです。y_true
とy_pred
テンソルを評価するにはどうすればよいですか?
これは非常に役に立ちました!私はこれらの点を自分で考えていないだろう。ありがとうございました。私は別の解決策を探します。 – TBZ92