joonmyung 1.4.0__tar.gz → 1.4.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.
- {joonmyung-1.4.0 → joonmyung-1.4.2}/PKG-INFO +1 -1
- {joonmyung-1.4.0 → joonmyung-1.4.2}/README.md +6 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/draw.py +0 -2
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/log.py +26 -15
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/utils.py +1 -1
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung.egg-info/PKG-INFO +1 -1
- {joonmyung-1.4.0 → joonmyung-1.4.2}/setup.py +1 -1
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/__init__.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/app.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/data.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/dummy.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/file.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/gradcam.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/meta_data/__init__.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/meta_data/label.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/meta_data/utils.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/metric.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/script.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung/status.py +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung.egg-info/SOURCES.txt +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung.egg-info/dependency_links.txt +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung.egg-info/not-zip-safe +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/joonmyung.egg-info/top_level.txt +0 -0
- {joonmyung-1.4.0 → joonmyung-1.4.2}/setup.cfg +0 -0
|
@@ -168,8 +168,6 @@ def rollout(attentions=None, gradients=None, head_fusion="mean", discard_ratios
|
|
|
168
168
|
attentions = attentions.min(axis=2)[0]
|
|
169
169
|
elif head_fusion == "median":
|
|
170
170
|
attentions = attentions.median(axis=2)[0]
|
|
171
|
-
else:
|
|
172
|
-
raise "Attention head fusion type Not supported"
|
|
173
171
|
|
|
174
172
|
if bs is not None:
|
|
175
173
|
attentions = attentions[:, bs]
|
|
@@ -72,21 +72,31 @@ class Logger():
|
|
|
72
72
|
def resetLog(self):
|
|
73
73
|
self.loggers = {k:AverageMeter() if type(v) == AverageMeter else v for k, v in self.loggers.items()}
|
|
74
74
|
|
|
75
|
-
def addLog(self, datas:dict, epoch=None,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
self.loggers
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
75
|
+
def addLog(self, datas:dict, epoch=None, bs = 1):
|
|
76
|
+
if self.validation():
|
|
77
|
+
for k, v in datas.items():
|
|
78
|
+
data_type = v[0]
|
|
79
|
+
if data_type == 0: # Values
|
|
80
|
+
self.loggers[k] = v[1]
|
|
81
|
+
elif data_type == 1: # AverageMeter
|
|
82
|
+
if k not in self.loggers.keys():
|
|
83
|
+
self.loggers[k] = AverageMeter()
|
|
84
|
+
self.loggers[k].update(v[1], bs)
|
|
85
|
+
elif data_type == 2: # Table
|
|
86
|
+
columns = list(v[1].keys())
|
|
87
|
+
data_num = len(list(v[1].values())[0])
|
|
88
|
+
self.loggers[k] = wandb.Table(columns=["epoch"] + columns)
|
|
89
|
+
for idx in range(data_num):
|
|
90
|
+
results = []
|
|
91
|
+
for c in columns:
|
|
92
|
+
if type(v[1][c]) == torch.Tensor:
|
|
93
|
+
result = wandb.Image(to_np(data2PIL(v[1][c][idx]))) if len(v[1][c].shape) == 4 else to_np(v[1][c])[idx]
|
|
94
|
+
elif type(v[1][c]) == list:
|
|
95
|
+
result = v[1][c][idx]
|
|
96
|
+
else:
|
|
97
|
+
raise ValueError
|
|
98
|
+
results.append(result)
|
|
99
|
+
self.loggers[k].add_data(str(epoch), *results)
|
|
90
100
|
return True
|
|
91
101
|
|
|
92
102
|
def getPath(self):
|
|
@@ -109,6 +119,7 @@ class Logger():
|
|
|
109
119
|
def validation(self):
|
|
110
120
|
return True if self.use_wandb else False
|
|
111
121
|
|
|
122
|
+
|
|
112
123
|
if __name__ == "__main__":
|
|
113
124
|
from playground.analysis.lib_import import *
|
|
114
125
|
dataset_name, server, device = "imagenet", "148", "cuda"
|
|
@@ -24,7 +24,7 @@ def to_tensor(vs):
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def str2list(s):
|
|
27
|
-
v = ast.literal_eval(s.replace(" ", "
|
|
27
|
+
v = ast.literal_eval(s.replace(" ", ""))
|
|
28
28
|
if type(v) is not list:
|
|
29
29
|
raise argparse.ArgumentTypeError("Argument \"%s\" is not a list" % (s))
|
|
30
30
|
return v
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|