|
|
@@ -245,76 +245,76 @@ if __name__ == '__main__': |
|
|
|
|
|
|
|
print('add_KB with GKB:') |
|
|
|
kb = add_KB(GKB_flag=True) |
|
|
|
abd = ReasonerBase(kb, 'confidence') |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'confidence') |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('add_KB without GKB:') |
|
|
|
kb = add_KB() |
|
|
|
abd = ReasonerBase(kb, 'confidence') |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'confidence') |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('add_KB without GKB:, no cache') |
|
|
|
kb = add_KB(use_cache=False) |
|
|
|
abd = ReasonerBase(kb, 'confidence') |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'confidence') |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('prolog_KB with add.pl:') |
|
|
|
kb = prolog_KB(pseudo_label_list=list(range(10)), pl_file='../examples/mnist_add/datasets/add.pl') |
|
|
|
abd = ReasonerBase(kb, 'confidence') |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'confidence') |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('prolog_KB with add.pl using zoopt:') |
|
|
|
kb = prolog_KB(pseudo_label_list=list(range(10)), pl_file='../examples/mnist_add/datasets/add.pl') |
|
|
|
abd = ReasonerBase(kb, 'confidence', zoopt=True) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'confidence', zoopt=True) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob2}, [8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [17], max_revision=1, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1]], 'prob':prob1}, [20], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
@@ -323,10 +323,10 @@ if __name__ == '__main__': |
|
|
|
[[0, 0, 0.01, 0, 0, 0, 0, 0.99, 0, 0], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]] |
|
|
|
|
|
|
|
kb = add_KB() |
|
|
|
abd = ReasonerBase(kb, 'confidence') |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1], [1, 2]], 'prob':multiple_prob}, [4, 8], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'confidence') |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1], [1, 2]], 'prob':multiple_prob}, [4, 8], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[[1, 1], [1, 2]], 'prob':multiple_prob}, [4, 8], max_revision=2, require_more_revision=1) |
|
|
|
res = reasoner.batch_abduce({'cls':[[1, 1], [1, 2]], 'prob':multiple_prob}, [4, 8], max_revision=2, require_more_revision=1) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
@@ -361,62 +361,62 @@ if __name__ == '__main__': |
|
|
|
|
|
|
|
print('HWF_KB with GKB, max_err=0.1') |
|
|
|
kb = HWF_KB(len_list=[1, 3, 5], GKB_flag=True, max_err = 0.1) |
|
|
|
abd = ReasonerBase(kb, 'hamming') |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [3], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'hamming') |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [3], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('HWF_KB without GKB, max_err=0.1') |
|
|
|
kb = HWF_KB(len_list=[1, 3, 5], max_err = 0.1) |
|
|
|
abd = ReasonerBase(kb, 'hamming') |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [3], max_revision=2, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'hamming') |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [3], max_revision=2, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('HWF_KB with GKB, max_err=1') |
|
|
|
kb = HWF_KB(len_list=[1, 3, 5], GKB_flag=True, max_err = 1) |
|
|
|
abd = ReasonerBase(kb, 'hamming') |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'hamming') |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [1.67], max_revision=3, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [1.67], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('HWF_KB without GKB, max_err=1') |
|
|
|
kb = HWF_KB(len_list=[1, 3, 5], max_err = 1) |
|
|
|
abd = ReasonerBase(kb, 'hamming') |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'hamming') |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '9']], 'prob':[None]}, [65], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [1.67], max_revision=3, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2']], 'prob':[None]}, [1.67], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '8', '8', '8', '8']], 'prob':[None]}, [3.17], max_revision=5, require_more_revision=3) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('HWF_KB with multiple inputs at once:') |
|
|
|
kb = HWF_KB(len_list=[1, 3, 5], max_err = 0.1) |
|
|
|
abd = ReasonerBase(kb, 'hamming') |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=1, require_more_revision=0) |
|
|
|
reasoner = ReasonerBase(kb, 'hamming') |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=1, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=3, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 65], max_revision=3, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 65], max_revision=3, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
print('max_revision is float') |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=0.5, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=0.5, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
res = abd.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=0.9, require_more_revision=0) |
|
|
|
res = reasoner.batch_abduce({'cls':[['5', '+', '2'], ['5', '+', '9']], 'prob':[None, None]}, [3, 64], max_revision=0.9, require_more_revision=0) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
@@ -487,7 +487,7 @@ if __name__ == '__main__': |
|
|
|
return self.kb.abduce_rules(pred_res) |
|
|
|
|
|
|
|
kb = HED_prolog_KB(pseudo_label_list=[1, 0, '+', '='], pl_file='../examples/hed/datasets/learn_add.pl') |
|
|
|
abd = HED_Reasoner(kb) |
|
|
|
reasoner = HED_Reasoner(kb) |
|
|
|
consist_exs = [[1, 1, '+', 0, '=', 1, 1], [1, '+', 1, '=', 1, 0], [0, '+', 0, '=', 0]] |
|
|
|
inconsist_exs1 = [[1, 1, '+', 0, '=', 1, 1], [1, '+', 1, '=', 1, 0], [0, '+', 0, '=', 0], [0, '+', 0, '=', 1]] |
|
|
|
inconsist_exs2 = [[1, '+', 0, '=', 0], [1, '=', 1, '=', 0], [0, '=', 0, '=', 1, 1]] |
|
|
@@ -503,14 +503,14 @@ if __name__ == '__main__': |
|
|
|
print() |
|
|
|
|
|
|
|
print('HED_Reasoner abduce') |
|
|
|
res = abd.abduce((consist_exs, [[[None]]] * len(consist_exs), [None] * len(consist_exs))) |
|
|
|
res = reasoner.abduce((consist_exs, [[[None]]] * len(consist_exs), [None] * len(consist_exs))) |
|
|
|
print(res) |
|
|
|
res = abd.abduce((inconsist_exs1, [[[None]]] * len(inconsist_exs1), [None] * len(inconsist_exs1))) |
|
|
|
res = reasoner.abduce((inconsist_exs1, [[[None]]] * len(inconsist_exs1), [None] * len(inconsist_exs1))) |
|
|
|
print(res) |
|
|
|
res = abd.abduce((inconsist_exs2, [[[None]]] * len(inconsist_exs2), [None] * len(inconsist_exs2))) |
|
|
|
res = reasoner.abduce((inconsist_exs2, [[[None]]] * len(inconsist_exs2), [None] * len(inconsist_exs2))) |
|
|
|
print(res) |
|
|
|
print() |
|
|
|
|
|
|
|
print('HED_Reasoner abduce rules') |
|
|
|
abduced_rules = abd.abduce_rules(consist_exs) |
|
|
|
abduced_rules = reasoner.abduce_rules(consist_exs) |
|
|
|
print(abduced_rules) |