diff --git a/modules/deeplearning/icing_cnn.py b/modules/deeplearning/icing_cnn.py index 8f33d0c399b8b70b13dd918decacd9eb1915071b..df10aa0522f97b0ca387a64193fcb4fde1a3b4a6 100644 --- a/modules/deeplearning/icing_cnn.py +++ b/modules/deeplearning/icing_cnn.py @@ -150,8 +150,6 @@ class IcingIntensityNN: self.test_recall = None self.test_precision = None self.test_confusion_matrix = None - self.test_f1score = None - self.test_mcc = None self.test_true_pos = None self.test_true_neg = None self.test_false_pos = None @@ -485,8 +483,6 @@ class IcingIntensityNN: self.test_auc = tf.keras.metrics.AUC(name='test_auc') self.test_recall = tf.keras.metrics.Recall(name='test_recall') self.test_precision = tf.keras.metrics.Precision(name='test_precision') - self.test_f1score = tfa.metrics.F1Score(2, threshold=0.5, name='test_f1score') - self.test_mcc = tfa.metrics.MatthewsCorrelationCoefficient(2, name='test_mcc') self.test_true_neg = tf.keras.metrics.TrueNegatives(name='test_true_neg') self.test_true_pos = tf.keras.metrics.TruePositives(name='test_true_pos') self.test_false_neg = tf.keras.metrics.FalseNegatives(name='test_false_neg') @@ -546,8 +542,6 @@ class IcingIntensityNN: self.test_true_pos(labels, pred) self.test_false_neg(labels, pred) self.test_false_pos(labels, pred) - self.test_f1score(labels, pred) - self.test_mcc(labels, pred) def predict(self, mini_batch): inputs = [mini_batch[0]] @@ -574,15 +568,23 @@ class IcingIntensityNN: self.test_auc.reset_states() self.test_recall.reset_states() self.test_precision.reset_states() - self.test_f1score.reset_states() - self.test_mcc.reset_states() self.test_true_neg.reset_states() self.test_true_pos.reset_states() self.test_false_neg.reset_states() self.test_false_pos.reset_states() - def do_metrics(self): - pass + def get_metrics(self): + recall = self.test_recall.result() + precsn = self.test_precision.result() + f1 = 2 * (precsn * recall) / (precsn + recall) + + tn = self.test_true_neg.result() + tp = self.test_true_pos.result() + fn = self.test_false_neg.result() + fp = self.test_false_pos.result() + + mcc = ((tp * tn) - (fp * fn)) / np.sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn)) + return f1, mcc def do_training(self, ckpt_dir=None): @@ -631,16 +633,18 @@ class IcingIntensityNN: for mini_batch_test in tst_ds: self.test_step(mini_batch_test) - recall = self.test_recall.result() - precsn = self.test_precision.result() - f1 = 2 * (precsn * recall) / (precsn + recall) - - tn = self.test_true_neg.result() - tp = self.test_true_pos.result() - fn = self.test_false_neg.result() - fp = self.test_false_pos.result() + # recall = self.test_recall.result() + # precsn = self.test_precision.result() + # f1 = 2 * (precsn * recall) / (precsn + recall) + # + # tn = self.test_true_neg.result() + # tp = self.test_true_pos.result() + # fn = self.test_false_neg.result() + # fp = self.test_false_pos.result() + # + # mcc = ((tp * tn) - (fp * fn)) / np.sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn)) - mcc = ((tp * tn) - (fp * fn)) / np.sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn)) + f1, mcc = self.get_metrics() with self.writer_valid.as_default(): tf.summary.scalar('loss_val', self.test_loss.result(), step=step) @@ -673,20 +677,21 @@ class IcingIntensityNN: for mini_batch in ds: self.test_step(mini_batch) - recall = self.test_recall.result().numpy() - precsn = self.test_precision.result().numpy() - f1 = 2 * (precsn * recall) / (precsn + recall) - - tn = self.test_true_neg.result().numpy() - tp = self.test_true_pos.result().numpy() - fn = self.test_false_neg.result().numpy() - fp = self.test_false_pos.result().numpy() - - mcc = ((tp*tn) - (fp*fn))/np.sqrt((tp+fp)*(tp+fn)*(tn+fp)*(tn+fn)) + # recall = self.test_recall.result().numpy() + # precsn = self.test_precision.result().numpy() + # f1 = 2 * (precsn * recall) / (precsn + recall) + # + # tn = self.test_true_neg.result().numpy() + # tp = self.test_true_pos.result().numpy() + # fn = self.test_false_neg.result().numpy() + # fp = self.test_false_pos.result().numpy() + # + # mcc = ((tp*tn)-(fp*fn))/np.sqrt((tp+fp)*(tp+fn)*(tn+fp)*(tn+fn)) + f1, mcc = self.get_metrics() print('loss, acc, recall, precision, auc, f1, mcc: ', self.test_loss.result().numpy(), self.test_accuracy.result().numpy(), - recall, precsn, self.test_auc.result().numpy(), f1, self.test_f1score.result().numpy(), mcc, self.test_mcc.result().numpy()) - print('--------------------------------------------------') + self.test_recall.result().numpy(), self.test_precision.result().numpy(), self.test_auc.result().numpy(), f1.numpy(), mcc.numpy()) + print('------------------------------------------------------') ckpt_manager.save() if self.DISK_CACHE and epoch == 0: