728x90
class F1Score(tf.keras.metrics.Metric):
def __init__(self, name='F1Score', **kwargs):
super(F1Score, self).__init__(name=name, **kwargs)
self.f1score = self.add_weight(name='F1Score', initializer='zeros')
self.count = self.add_weight(name='F1ScoreCount', initializer='zeros')
def update_state(self, y_true, y_pred, sample_weight=None):
y_true = tf.cast(y_true, tf.bool)
y_pred = tf.cast(y_pred, tf.bool)
true_positives = tf.logical_and(tf.equal(y_true, True), tf.equal(y_pred, True))
true_positives = tf.cast(true_positives, self.dtype)
count_true_positives = tf.reduce_sum(true_positives)
possible_positives = tf.cast(y_true, self.dtype)
count_possible_positives = tf.reduce_sum(possible_positives)
predicted_positives = tf.cast(y_pred, self.dtype)
count_predicted_positives = tf.reduce_sum(predicted_positives)
precision = count_true_positives / (count_predicted_positives + K.epsilon())
recall = count_true_positives / (count_possible_positives + K.epsilon())
f1_cal = 2*(precision*recall)/(precision + recall + K.epsilon())
self.count.assign_add(1)
a = 1.0 / self.count
b = 1.0 - a
self.f1score.assign(a*f1_cal+b*self.f1score)
def result(self):
return self.f1score
728x90
'Programming > Python' 카테고리의 다른 글
[Python] Ubuntu 20.04에 python 3.10 설치 (0) | 2024.03.11 |
---|---|
[python]무작위 페이크 이름 생성기 (0) | 2022.05.13 |
[#1] 파이썬에 대하여 개인적인 생각 (0) | 2021.12.24 |
[#0] 파이썬 (0) | 2021.12.06 |