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

Run 1


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]:
Index(['Resnet-Dense-Kwinners', 'Resnet-Sparse-ReLU',
       'WideResnet-Dense-Kwinners', 'WideResnet-Dense-ReLU',
       'WideResnet-Sparse-Kwinners', 'Resnet-Sparse-Kwinners',
       'Resnet-Dense-ReLU', 'WideResnet-Sparse-ReLU'],
      dtype='object')

In [27]:
df.head()


Out[27]:
Resnet-Dense-Kwinners Resnet-Sparse-ReLU WideResnet-Dense-Kwinners WideResnet-Dense-ReLU WideResnet-Sparse-Kwinners Resnet-Sparse-Kwinners Resnet-Dense-ReLU WideResnet-Sparse-ReLU
0 93.25 ± 0.26 93.68 ± 0.27 94.72 ± 0.07 94.85 ± 0.13 94.08 ± 0.19 91.92 ± 0.20 93.52 ± 0.70 94.28 ± 0.10
0.025 88.14 ± 0.60 87.54 ± 0.58 85.61 ± 0.44 84.91 ± 0.44 85.38 ± 0.83 85.96 ± 0.67 86.62 ± 1.30 85.64 ± 0.38
0.05 79.69 ± 1.48 77.45 ± 0.90 74.56 ± 1.14 73.02 ± 0.63 74.34 ± 1.60 76.95 ± 1.31 76.79 ± 1.46 74.16 ± 0.92
0.075 69.43 ± 2.31 64.35 ± 1.26 61.72 ± 1.73 60.18 ± 0.94 61.46 ± 2.52 66.60 ± 1.80 64.81 ± 1.66 60.94 ± 2.17
0.1 59.34 ± 3.07 51.79 ± 1.56 49.22 ± 1.77 48.12 ± 1.22 48.98 ± 3.22 56.34 ± 1.82 53.22 ± 1.74 48.50 ± 3.19

In [28]:
# paper comparison table
df[['Resnet-Dense-ReLU', 'Resnet-Sparse-Kwinners', 'WideResnet-Dense-ReLU', 'WideResnet-Sparse-Kwinners']]


Out[28]:
Resnet-Dense-ReLU Resnet-Sparse-Kwinners WideResnet-Dense-ReLU WideResnet-Sparse-Kwinners
0 93.52 ± 0.70 91.92 ± 0.20 94.85 ± 0.13 94.08 ± 0.19
0.025 86.62 ± 1.30 85.96 ± 0.67 84.91 ± 0.44 85.38 ± 0.83
0.05 76.79 ± 1.46 76.95 ± 1.31 73.02 ± 0.63 74.34 ± 1.60
0.075 64.81 ± 1.66 66.60 ± 1.80 60.18 ± 0.94 61.46 ± 2.52
0.1 53.22 ± 1.74 56.34 ± 1.82 48.12 ± 1.22 48.98 ± 3.22
0.125 43.26 ± 1.64 47.17 ± 1.86 38.23 ± 1.44 38.58 ± 3.43
0.15 35.78 ± 1.59 39.74 ± 1.84 31.00 ± 1.47 30.96 ± 3.41
0.175 29.97 ± 1.57 33.86 ± 1.73 25.61 ± 1.41 25.34 ± 3.06

In [29]:
# dense weights only
df[['Resnet-Dense-ReLU', 'Resnet-Dense-Kwinners', 'WideResnet-Dense-ReLU', 'WideResnet-Dense-Kwinners']]


Out[29]:
Resnet-Dense-ReLU Resnet-Dense-Kwinners WideResnet-Dense-ReLU WideResnet-Dense-Kwinners
0 93.52 ± 0.70 93.25 ± 0.26 94.85 ± 0.13 94.72 ± 0.07
0.025 86.62 ± 1.30 88.14 ± 0.60 84.91 ± 0.44 85.61 ± 0.44
0.05 76.79 ± 1.46 79.69 ± 1.48 73.02 ± 0.63 74.56 ± 1.14
0.075 64.81 ± 1.66 69.43 ± 2.31 60.18 ± 0.94 61.72 ± 1.73
0.1 53.22 ± 1.74 59.34 ± 3.07 48.12 ± 1.22 49.22 ± 1.77
0.125 43.26 ± 1.64 50.20 ± 3.33 38.23 ± 1.44 38.91 ± 1.63
0.15 35.78 ± 1.59 42.68 ± 3.29 31.00 ± 1.47 31.22 ± 1.34
0.175 29.97 ± 1.57 36.62 ± 3.09 25.61 ± 1.41 25.72 ± 1.23

In [30]:
# sparse weights only
df[['Resnet-Sparse-ReLU', 'Resnet-Sparse-Kwinners', 'WideResnet-Sparse-ReLU', 'WideResnet-Sparse-Kwinners']]


Out[30]:
Resnet-Sparse-ReLU Resnet-Sparse-Kwinners WideResnet-Sparse-ReLU WideResnet-Sparse-Kwinners
0 93.68 ± 0.27 91.92 ± 0.20 94.28 ± 0.10 94.08 ± 0.19
0.025 87.54 ± 0.58 85.96 ± 0.67 85.64 ± 0.38 85.38 ± 0.83
0.05 77.45 ± 0.90 76.95 ± 1.31 74.16 ± 0.92 74.34 ± 1.60
0.075 64.35 ± 1.26 66.60 ± 1.80 60.94 ± 2.17 61.46 ± 2.52
0.1 51.79 ± 1.56 56.34 ± 1.82 48.50 ± 3.19 48.98 ± 3.22
0.125 41.74 ± 2.00 47.17 ± 1.86 38.43 ± 3.55 38.58 ± 3.43
0.15 34.46 ± 2.08 39.74 ± 1.84 31.20 ± 3.56 30.96 ± 3.41
0.175 29.31 ± 2.15 33.86 ± 1.73 25.84 ± 3.39 25.34 ± 3.06

In [34]:
# relu only
df[['Resnet-Dense-ReLU', 'Resnet-Sparse-ReLU', 'WideResnet-Dense-ReLU', 'WideResnet-Sparse-ReLU']]


Out[34]:
Resnet-Dense-ReLU Resnet-Sparse-ReLU WideResnet-Dense-ReLU WideResnet-Sparse-ReLU
0 93.52 ± 0.70 93.68 ± 0.27 94.85 ± 0.13 94.28 ± 0.10
0.025 86.62 ± 1.30 87.54 ± 0.58 84.91 ± 0.44 85.64 ± 0.38
0.05 76.79 ± 1.46 77.45 ± 0.90 73.02 ± 0.63 74.16 ± 0.92
0.075 64.81 ± 1.66 64.35 ± 1.26 60.18 ± 0.94 60.94 ± 2.17
0.1 53.22 ± 1.74 51.79 ± 1.56 48.12 ± 1.22 48.50 ± 3.19
0.125 43.26 ± 1.64 41.74 ± 2.00 38.23 ± 1.44 38.43 ± 3.55
0.15 35.78 ± 1.59 34.46 ± 2.08 31.00 ± 1.47 31.20 ± 3.56
0.175 29.97 ± 1.57 29.31 ± 2.15 25.61 ± 1.41 25.84 ± 3.39

In [33]:
# kwinners only
df[['Resnet-Dense-Kwinners', 'Resnet-Sparse-Kwinners', 'WideResnet-Dense-Kwinners', 'WideResnet-Sparse-Kwinners']]


Out[33]:
Resnet-Dense-Kwinners Resnet-Sparse-Kwinners WideResnet-Dense-Kwinners WideResnet-Sparse-Kwinners
0 93.25 ± 0.26 91.92 ± 0.20 94.72 ± 0.07 94.08 ± 0.19
0.025 88.14 ± 0.60 85.96 ± 0.67 85.61 ± 0.44 85.38 ± 0.83
0.05 79.69 ± 1.48 76.95 ± 1.31 74.56 ± 1.14 74.34 ± 1.60
0.075 69.43 ± 2.31 66.60 ± 1.80 61.72 ± 1.73 61.46 ± 2.52
0.1 59.34 ± 3.07 56.34 ± 1.82 49.22 ± 1.77 48.98 ± 3.22
0.125 50.20 ± 3.33 47.17 ± 1.86 38.91 ± 1.63 38.58 ± 3.43
0.15 42.68 ± 3.29 39.74 ± 1.84 31.22 ± 1.34 30.96 ± 3.41
0.175 36.62 ± 3.09 33.86 ± 1.73 25.72 ± 1.23 25.34 ± 3.06

In [ ]: