![見出し画像](https://assets.st-note.com/production/uploads/images/55442178/rectangle_large_type_2_2d1bf1acf51b55ac9abb594f4170f774.png?width=1200)
Photo by
voice_watanabe
KerasのメトリクスにF値がないので作ってみた
まずはコード
概要
Metricクラスを継承してF値クラスを作成
なぜkerasにF値が用意されてないのか
下のリンクを見るとわかるように、元々はあったのに削除されています。
一体なぜ?以下のURLに書いてありました。
つまり、
「バッチ毎にスコアを算出し、その後エポックに含まれる各バッチのスコアの平均を求めたもの」と「エポック全体のデータを用いて算出したスコア」に違いが出るメトリクスに関しては、バッチ毎のスコアを算出するMetricの仕様では誤解を招く恐れがあったから
らしいです。
つまり、データ集合a, bとメトリクスMがあったとき、
mean(M(a), M(b)) ≠ M(a+b)
となるものはKerasがバージョン2になるときに削除されたようです。
そこで
metrics_utils.update_confusion_matrix_variablesを用いて混同行列(confusion matrix)をバッチごとに更新している(?)Recallの実装を参考にF値を求めてみました。
正直あってる自信ない…
間違ってたらご意見お願いします…
修正
2021/07/03:GitHub上のコードの誤字を修正しました。
旧:def reset_state(self):
新:def reset_states(self):
2022/01/20:追記
TensorFlow AddonsにF値の実装がありました。
こちらです。
かなり前に見つけてたのに記事の更新を忘れていました…。
この記事が気に入ったらサポートをしてみませんか?