def init(self, dataset, criterion, sample_nums, path_graph, path_wnids, classes, Rules, tree_supervision_weight=1.): """ Extra init method makes clear which arguments are finally necessary for this class to function. The constructor for this class may generate some of these required arguments if initially missing. """ self.dataset = dataset self.num_classes = len(classes) self.nodes = Node.get_nodes(path_graph, path_wnids, classes) self.rules = Rules(dataset, path_graph, path_wnids, classes) self.tree_supervision_weight = tree_supervision_weight self.criterion = criterion self.sample_nums = np.array(sample_nums) self.node_depths = defaultdict(lambda: []) self.node_weights = defaultdict(lambda: []) effective_num = 1.0 - np.power(0.999, self.sample_nums) weights = (1.0 - 0.999) / np.array(effective_num) self.weights = weights for node in self.nodes: key = node.num_classes depth = node.get_depth() self.node_depths[key].append(depth) node_weight = [] for new_label in range(node.num_classes): node_weight.append(weights[node.new_to_old_classes[new_label]]) self.node_weights[key].append(node_weight)
def __init__(self, dataset, path_graph=None, path_wnids=None, classes=()): if not path_graph: path_graph = dataset_to_default_path_graph(dataset) if not path_wnids: path_wnids = dataset_to_default_path_wnids(dataset) if not classes: classes = dataset_to_dummy_classes(dataset) super().__init__() assert all([dataset, path_graph, path_wnids, classes]) self.classes = classes self.nodes = Node.get_nodes(path_graph, path_wnids, classes) self.G = self.nodes[0].G self.wnid_to_node = {node.wnid: node for node in self.nodes} self.wnids = get_wnids(path_wnids) self.wnid_to_class = { wnid: cls for wnid, cls in zip(self.wnids, self.classes) } self.correct = 0 self.total = 0 self.I = torch.eye(len(classes))
def init(self, dataset, criterion, path_graph, path_wnids, classes, Rules, tree_supervision_weight=1.): """ Extra init method makes clear which arguments are finally necessary for this class to function. The constructor for this class may generate some of these required arguments if initially missing. """ self.dataset = dataset self.num_classes = len(classes) self.nodes = Node.get_nodes(path_graph, path_wnids, classes) self.rules = Rules(dataset, path_graph, path_wnids, classes) self.tree_supervision_weight = tree_supervision_weight self.criterion = criterion