In [1]:
import pandas as pd
import os
import json
from collections import OrderedDict
import re
import numpy as np
In [2]:
mapping = OrderedDict({
'model=BaseModel,network=resnet152,percent_on_k_winner=0.25': 'Resnet-Dense-Kwinners',
'model=SparseModel,network=resnet152,percent_on_k_winner=0.25': 'Resnet-Sparse-Kwinners',
'model=BaseModel,network=WideResNet,percent_on_k_winner=0.25': 'WideResnet-Dense-Kwinners',
'model=SparseModel,network=WideResNet,percent_on_k_winner=0.25': 'WideResnet-Sparse-Kwinners',
'model=BaseModel,network=resnet152,percent_on_k_winner=1': 'Resnet-Dense-ReLU',
'model=SparseModel,network=resnet152,percent_on_k_winner=1': 'Resnet-Sparse-ReLU',
'model=BaseModel,network=WideResNet,percent_on_k_winner=1': 'WideResnet-Dense-ReLU',
'model=SparseModel,network=WideResNet,percent_on_k_winner=1': 'WideResnet-Sparse-ReLU',
})
In [3]:
# a = '23_model=BaseModel,network=resnet152,percent_on_k_winner=0.25'
# a = re.sub(r'^\d+_', '', a)
# a
In [26]:
file = os.path.expanduser("~/nta/results/resnet_cifar3/noise_results.json")
with open(file, 'r') as f:
noise_results = json.load(f)
mapped_results = {}
for k,v in noise_results.items():
new_k = mapping[k]
mapped_results[new_k] = v
for k, v in mapped_results.items():
for noise_level, accuracies in v.items():
mapped_results[k][noise_level] = "{:.2f} ± {:.2f}".format(np.mean(accuracies)*100, np.std(accuracies)*100)
# print(mapped_results)
df = pd.DataFrame.from_dict(mapped_results)
df = df.drop('0.2')
df.columns
Out[26]:
In [27]:
df.head()
Out[27]:
In [28]:
# paper comparison table
df[['Resnet-Dense-ReLU', 'Resnet-Sparse-Kwinners', 'WideResnet-Dense-ReLU', 'WideResnet-Sparse-Kwinners']]
Out[28]:
In [29]:
# dense weights only
df[['Resnet-Dense-ReLU', 'Resnet-Dense-Kwinners', 'WideResnet-Dense-ReLU', 'WideResnet-Dense-Kwinners']]
Out[29]:
In [30]:
# sparse weights only
df[['Resnet-Sparse-ReLU', 'Resnet-Sparse-Kwinners', 'WideResnet-Sparse-ReLU', 'WideResnet-Sparse-Kwinners']]
Out[30]:
In [34]:
# relu only
df[['Resnet-Dense-ReLU', 'Resnet-Sparse-ReLU', 'WideResnet-Dense-ReLU', 'WideResnet-Sparse-ReLU']]
Out[34]:
In [33]:
# kwinners only
df[['Resnet-Dense-Kwinners', 'Resnet-Sparse-Kwinners', 'WideResnet-Dense-Kwinners', 'WideResnet-Sparse-Kwinners']]
Out[33]:
In [ ]: