Minh Q. Le
Pushed COSMIC code
a446b0b
import comet.src.train.batch as batch
import comet.src.evaluate.evaluate as base_evaluate
import numpy as np
def make_evaluator(opt, *args):
if opt.exp == "generation":
return AtomicGenerationEvaluator(opt, *args)
else:
return AtomicClassificationEvaluator(opt, *args)
class AtomicGenerationEvaluator(base_evaluate.Evaluator):
def __init__(self, opt, model, data_loader):
super(AtomicGenerationEvaluator, self).__init__(
opt, model, data_loader)
self.batch = batch.batch_atomic_generate
def initialize_losses(self):
average_loss = {"total_micro": 0, "total_macro": 0}
nums = {"total_micro": 0, "total_macro": 0}
return average_loss, nums
def compute_final_scores(self, average_loss, nums):
average_loss["total_macro"] /= nums["total_macro"]
average_loss["total_micro"] /= nums["total_micro"]
average_loss["ppl_macro"] = np.exp(average_loss["total_macro"])
average_loss["ppl_micro"] = np.exp(average_loss["total_micro"])
return average_loss
def counter(self, nums):
return nums["total_macro"]
def print_result(self, split, epoch_losses):
print("{} Loss: \t {}".format(
split, epoch_losses["total_micro"]))
print("{} Perplexity: \t {}".format(
split, epoch_losses["ppl_micro"]))