compositional-explanations 0.0.3__tar.gz → 0.0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/LICENSE +0 -0
- {compositional_explanations-0.0.3/src/compositional_explanations.egg-info → compositional_explanations-0.0.3.2}/PKG-INFO +1 -1
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/README.md +0 -0
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/pyproject.toml +1 -1
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/metrics.py +9 -7
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/optimal.py +3 -3
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/optimal_sample_heuristic.py +2 -2
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/optimal_sum_heuristic.py +2 -2
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2/src/compositional_explanations.egg-info}/PKG-INFO +1 -1
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/SOURCES.txt +4 -4
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/top_level.txt +1 -1
- {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/constants.py +0 -0
- {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/general_utils.py +0 -0
- {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/mask_utils.py +2 -1
- {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/optimal_utils.py +2 -2
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/setup.cfg +0 -0
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/beam.py +0 -0
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/formula.py +0 -0
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/path_heuristic.py +0 -0
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/dependency_links.txt +0 -0
- {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/requires.txt +0 -0
|
File without changes
|
|
File without changes
|
|
@@ -7,7 +7,7 @@ import functools
|
|
|
7
7
|
|
|
8
8
|
import torch
|
|
9
9
|
|
|
10
|
-
from
|
|
10
|
+
from package_utils import mask_utils
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
@functools.lru_cache(maxsize=10)
|
|
@@ -43,17 +43,19 @@ def iou(vector1, vector2):
|
|
|
43
43
|
return score
|
|
44
44
|
|
|
45
45
|
|
|
46
|
+
|
|
46
47
|
def compute_iou_from_masks(*, formula, masks, bitmaps):
|
|
47
|
-
"""Compute the
|
|
48
|
+
"""Compute the IoU between a formula mask and a bitmap.
|
|
48
49
|
Args:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
number of sample.
|
|
50
|
+
formula (str): A string representing the formula.
|
|
51
|
+
masks (dict): A dictionary mapping concepts to their corresponding binary masks.
|
|
52
|
+
bitmaps (torch.Tensor): A tensor of shape (N, H, W) where N is the number of samples.
|
|
53
53
|
Returns:
|
|
54
|
-
iou (float): The intersection over union between the
|
|
54
|
+
iou (float): The intersection over union between the formula mask and the bitmap.
|
|
55
55
|
"""
|
|
56
56
|
formula_mask = mask_utils.get_formula_mask(formula, masks)
|
|
57
|
+
if formula_mask.device != bitmaps.device:
|
|
58
|
+
formula_mask = formula_mask.to(bitmaps.device)
|
|
57
59
|
intersection = torch.count_nonzero(formula_mask & bitmaps).item()
|
|
58
60
|
v1_size = compute_hits(formula_mask).item()
|
|
59
61
|
v2_size = compute_hits(bitmaps).item()
|
|
@@ -8,8 +8,8 @@ import torch
|
|
|
8
8
|
|
|
9
9
|
from compositional_explanations import formula as F
|
|
10
10
|
from compositional_explanations import path_heuristic
|
|
11
|
-
from
|
|
12
|
-
from
|
|
11
|
+
from package_utils import optimal_utils, mask_utils, general_utils
|
|
12
|
+
from package_utils.constants import INDEX_OR, INDEX_AND, INDEX_NOT
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def update_frontier_by_ancestors(
|
|
@@ -924,7 +924,7 @@ def compute_optimal_explanations(*, masks, bitmaps, disjoint_info, length, devic
|
|
|
924
924
|
bitmaps = bitmaps.to(device)
|
|
925
925
|
|
|
926
926
|
masks_info = mask_utils.get_dataset_info(masks, cache_dir)
|
|
927
|
-
max_size_mask = torch.numel(masks[0])
|
|
927
|
+
max_size_mask = torch.numel(general_utils.parse_mask_by_type(masks[0]))
|
|
928
928
|
|
|
929
929
|
# Get quantities
|
|
930
930
|
neuron_quantities, concept_quantities = optimal_utils.get_optimal_heuristic_info(
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
import numpy as np
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from package_utils import optimal_utils
|
|
7
7
|
from compositional_explanations import formula as F
|
|
8
|
-
from
|
|
8
|
+
from package_utils.constants import (
|
|
9
9
|
TOP_INDEX_SAMPLE,
|
|
10
10
|
BOTTOM_INDEX_SAMPLE,
|
|
11
11
|
BOTTOM_INDEX_SUM,
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from package_utils import optimal_utils
|
|
6
6
|
from compositional_explanations import formula as F
|
|
7
|
-
from
|
|
7
|
+
from package_utils.constants import TOP_INDEX_SUM, BOTTOM_INDEX_SUM
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def estimate_disjoint_label_info(label, *, left_quantities, right_quantities):
|
|
@@ -13,7 +13,7 @@ src/compositional_explanations.egg-info/SOURCES.txt
|
|
|
13
13
|
src/compositional_explanations.egg-info/dependency_links.txt
|
|
14
14
|
src/compositional_explanations.egg-info/requires.txt
|
|
15
15
|
src/compositional_explanations.egg-info/top_level.txt
|
|
16
|
-
src/
|
|
17
|
-
src/
|
|
18
|
-
src/
|
|
19
|
-
src/
|
|
16
|
+
src/package_utils/constants.py
|
|
17
|
+
src/package_utils/general_utils.py
|
|
18
|
+
src/package_utils/mask_utils.py
|
|
19
|
+
src/package_utils/optimal_utils.py
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
compositional_explanations
|
|
2
|
-
|
|
2
|
+
package_utils
|
|
File without changes
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ import pickle
|
|
|
4
4
|
|
|
5
5
|
import torch
|
|
6
6
|
|
|
7
|
-
from
|
|
7
|
+
from package_utils import general_utils
|
|
8
8
|
from compositional_explanations import formula as F
|
|
9
9
|
|
|
10
10
|
|
|
@@ -24,6 +24,7 @@ def get_dataset_info(masks, info_directory):
|
|
|
24
24
|
print("Loading dataset info from cache...")
|
|
25
25
|
common_elements, unique_elements, uncoverable_elements = pickle.load(file)
|
|
26
26
|
else:
|
|
27
|
+
print("Computing dataset info...")
|
|
27
28
|
# Compute unique elements
|
|
28
29
|
sum_elements = torch.zeros_like(
|
|
29
30
|
general_utils.parse_mask_by_type(masks[1]), dtype=torch.int32
|
|
@@ -7,8 +7,8 @@ import torch
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
|
|
9
9
|
from compositional_explanations import formula as F
|
|
10
|
-
from
|
|
11
|
-
from
|
|
10
|
+
from package_utils import general_utils
|
|
11
|
+
from package_utils.constants import (
|
|
12
12
|
QUANTITIES,
|
|
13
13
|
INDEX_TUPLE_MAX,
|
|
14
14
|
INDEX_TUPLE_MIN,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|