|
a |
|
b/utils/logging.py |
|
|
1 |
import pandas as pd |
|
|
2 |
import torch |
|
|
3 |
|
|
|
4 |
|
|
|
5 |
def log(fname, columns, values): |
|
|
6 |
# TODO convert to numpy for lower space requirements |
|
|
7 |
try: |
|
|
8 |
df = pd.read_csv(fname) |
|
|
9 |
except FileNotFoundError: |
|
|
10 |
df = pd.DataFrame(columns=columns) |
|
|
11 |
df = df.append(dict(zip(columns, values)), ignore_index=True) |
|
|
12 |
df.to_csv(fname, index=False) |
|
|
13 |
|
|
|
14 |
|
|
|
15 |
def log_iou(fname, epoch, ious: torch.Tensor): |
|
|
16 |
try: |
|
|
17 |
df = pd.read_csv(fname) |
|
|
18 |
except FileNotFoundError: |
|
|
19 |
df = pd.DataFrame(columns=["epoch", "iou"]) |
|
|
20 |
serialized_ious = ious.flatten().numpy() |
|
|
21 |
for iou in serialized_ious: |
|
|
22 |
df = df.append(dict(zip(["epoch", "iou"], [epoch, iou])), ignore_index=True) |
|
|
23 |
df.to_csv(fname, index=False) |
|
|
24 |
|
|
|
25 |
|
|
|
26 |
def log_full(epoch, id, config, result_dict, type): |
|
|
27 |
data = {**config, **result_dict} |
|
|
28 |
|
|
|
29 |
try: |
|
|
30 |
df = pd.read_csv(f"logs/{type}/{config['model']}/{id}.csv") |
|
|
31 |
except FileNotFoundError: |
|
|
32 |
print("File not found, creating new") |
|
|
33 |
df = pd.DataFrame(columns=data) |
|
|
34 |
data["epoch"] = epoch |
|
|
35 |
|
|
|
36 |
# data now contains all scores for every sample, so iterate over samples |
|
|
37 |
new_df = df.append(data, ignore_index=True) |
|
|
38 |
new_df.to_csv(f"logs/{type}/{config['model']}/{id}.csv", index=False) |