def learn(self, data): print("Learning") if self.model is None: self.model = RootNode(learn(data)) else: augment_spn(self.model.children[0], data, self.model.children[0].scope) #self.model.evaluate(data, mpe=False) #self.model.hard_em(data) print(np.mean(self.model.evaluate(data, mpe=False)))
class LearnSPN: def __init__(self): self.model = None def learn(self, data): self.model = RootNode(learn(data)) def evaluate(self, obs, mpe=False): assert self.model, "You gotta run learn on some data at least once!!" return self.model.evaluate(obs, mpe=mpe)
class IncrementalLearnSPN(LearnSPN): def __init__(self): super(IncrementalLearnSPN, self).__init__() def learn(self, data): print("Learning") if self.model is None: self.model = RootNode(learn(data)) else: augment_spn(self.model.children[0], data, self.model.children[0].scope) #self.model.evaluate(data, mpe=False) #self.model.hard_em(data) print(np.mean(self.model.evaluate(data, mpe=False)))
def learn(self, data): self.model = RootNode(learn(data))