class AndOrNetwork(object): def __init__(self, regions): self.regions = regions self.classifier = ClassifierRegion((1,1)) self.regions.append(self.classifier) self.num_regions = len(regions) for k in range(1, self.num_regions): self.regions[k].set_child(self.regions[k-1]) def do_inference(self, image, category): """ Returns True iff the image is recognized correctly. """ self.regions[0].do_inference(image) for region in self.regions[1:]: region.do_inference() return self.classifier.is_recognized(category) def get_classifier(self): """ Returns the final region. """ return self.classifier def prepare_for_inference(self, start=0): """ Pass-through method to regions. """ for r in self.regions[start:]: r.prepare_for_inference()
def __init__(self, regions): self.regions = regions self.classifier = ClassifierRegion((1,1)) self.regions.append(self.classifier) self.num_regions = len(regions) for k in range(1, self.num_regions): self.regions[k].set_child(self.regions[k-1])