Skip to content

Commit

Permalink
add top5 acc
Browse files Browse the repository at this point in the history
  • Loading branch information
aaron-xichen committed May 24, 2017
1 parent c99dcd7 commit f8d9059
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 31 deletions.
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,27 +48,27 @@ We also provide a simple demo to quantize these models to specified bit-width wi
`python quantize.py --type cifar10 --quant_method linear --param_bits 8 --fwd_bits 8 --bn_bits 8 --ngpu 1`

## Top1 Accuracy
We evaluate the performance of popular dataset and models with linear quantized method. The bit-width of running mean and running variance in BN are 10 bits for all results.
We evaluate the performance of popular dataset and models with linear quantized method. The bit-width of running mean and running variance in BN are 10 bits for all results (except for 32-float (except for 32-float).


|Model|32-float |12-bit |10-bit |8-bit |6-bit |
|:----|:--------:|:------:|:-----:|:-----:|:-----:|
|[MNIST](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/mnist-b07bb66b.pth)|98.42%|98.43%|98.44%|98.44%|98.32|
|[SVHN](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/svhn-f564f3d8.pth)|96.03%|96.03%|96.04%|96.02%|95.46%|
|[CIFAR10](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/cifar10-d875770b.pth)|93.78%|93.79%|93.80%|93.58%|90.86%|
|[CIFAR100](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/cifar100-3a55a987.pth)|74.27%|74.21%|74.19%|73.70%|66.32%|
|[STL10](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/stl10-866321e9.pth)|77.59%|77.65%|77.70%|77.59%|73.40%|
|[AlexNet](https://download.pytorch.org/models/alexnet-owt-4df8aa71.pth)|55.70%|55.66%|55.54%|54.17%|18.19%|
|[VGG16](https://download.pytorch.org/models/vgg16-397923af.pth)|70.44%|70.45%|70.44%|69.99%|53.33%|
|[VGG19](https://download.pytorch.org/models/vgg19-dcbb9e9d.pth)|71.36%|71.35%|71.34%|70.88%|56.00%|
|[ResNet18](https://download.pytorch.org/models/resnet18-5c106cde.pth)|68.63%|68.62%|68.49%|66.80%|19.14%|
|[ResNet34](https://download.pytorch.org/models/resnet34-333f7ec4.pth)|72.50%|72.46%|72.45%|71.47%|32.25%|
|[ResNet50](https://download.pytorch.org/models/resnet50-19c8e357.pth)|74.98%|74.94%|74.91%|72.54%|2.43%|
|[ResNet101](https://download.pytorch.org/models/resnet101-5d3b4d8f.pth)|76.69%|76.66%|76.22%|65.69%|1.41%|
|[ResNet152](https://download.pytorch.org/models/resnet152-b121ed2d.pth)|77.55%|77.51%|77.40%|74.95%|9.29%|
|[SqueezeNetV0](https://download.pytorch.org/models/squeezenet1_0-a815701f.pth)|56.73%|56.75%|56.70%|53.93%|14.21%|
|[SqueezeNetV1](https://download.pytorch.org/models/squeezenet1_1-f364aa15.pth)|56.52%|56.52%|56.24%|54.56%|17.10%|
|[InceptionV3](https://download.pytorch.org/models/inception_v3_google-1a9a5a14.pth)|76.41%|76.43%|76.44%|73.67%|1.50%|
|[MNIST](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/mnist-b07bb66b.pth)|98.42|98.43|98.44|98.44|98.32|
|[SVHN](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/svhn-f564f3d8.pth)|96.03|96.03|96.04|96.02|95.46|
|[CIFAR10](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/cifar10-d875770b.pth)|93.78|93.79|93.80|93.58|90.86|
|[CIFAR100](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/cifar100-3a55a987.pth)|74.27|74.21|74.19|73.70|66.32|
|[STL10](http://ml.cs.tsinghua.edu.cn/~chenxi/pytorch-models/stl10-866321e9.pth)|77.59|77.65|77.70|77.59|73.40|
|[AlexNet](https://download.pytorch.org/models/alexnet-owt-4df8aa71.pth)|55.70/78.42|55.66/78.41|55.54/78.39|54.17/77.29|18.19/36.25|
|[VGG16](https://download.pytorch.org/models/vgg16-397923af.pth)|70.44/89.43|70.45/89.43|70.44/89.33|69.99/89.17|53.33/76.32|
|[VGG19](https://download.pytorch.org/models/vgg19-dcbb9e9d.pth)|71.36/89.94|71.35/89.93|71.34/89.88|70.88/89.62|56.00/78.62|
|[ResNet18](https://download.pytorch.org/models/resnet18-5c106cde.pth)|68.63/88.31|68.62/88.33|68.49/88.25|66.80/87.20|19.14/36.49|
|[ResNet34](https://download.pytorch.org/models/resnet34-333f7ec4.pth)|72.50/90.86|72.46/90.82|72.45/90.85|71.47/90.00|32.25/55.71|
|[ResNet50](https://download.pytorch.org/models/resnet50-19c8e357.pth)|74.98/92.17|74.94/92.12|74.91/92.09|72.54/90.44|2.43/5.36|
|[ResNet101](https://download.pytorch.org/models/resnet101-5d3b4d8f.pth)|76.69/93.30|76.66/93.25|76.22/92.90|65.69/79.54|1.41/1.18|
|[ResNet152](https://download.pytorch.org/models/resnet152-b121ed2d.pth)|77.55/93.59|77.51/93.62|77.40/93.54|74.95/92.46|9.29/16.75|
|[SqueezeNetV0](https://download.pytorch.org/models/squeezenet1_0-a815701f.pth)|56.73/79.39|56.75/79.40|56.70/79.27|53.93/77.04|14.21/29.74|
|[SqueezeNetV1](https://download.pytorch.org/models/squeezenet1_1-f364aa15.pth)|56.52/79.13|56.52/79.15|56.24/79.03|54.56/77.33|17.10/32.46|
|[InceptionV3](https://download.pytorch.org/models/inception_v3_google-1a9a5a14.pth)|76.41/92.78|76.43/92.71|76.44/92.73|73.67/91.34|1.50/4.82|

**Note: ImageNet 32-float models are directly from torchvision**

Expand Down
8 changes: 4 additions & 4 deletions quantize.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,14 @@

# eval model
val_ds = ds_fetcher(args.batch_size, data_root=args.data_root, train=False, input_size=args.input_size)
acc = misc.eval_model(model_raw, val_ds, ngpu=args.ngpu, is_imagenet=is_imagenet)
acc1, acc5 = misc.eval_model(model_raw, val_ds, ngpu=args.ngpu, is_imagenet=is_imagenet)

# print sf
print(model_raw)
res_str = "type={}, quant_method={}, param_bits={}, bn_bits={}, fwd_bits={}, overflow_rate={}, acc={:.4f}".format(
args.type, args.quant_method, args.param_bits, args.bn_bits, args.fwd_bits, args.overflow_rate, acc)
res_str = "type={}, quant_method={}, param_bits={}, bn_bits={}, fwd_bits={}, overflow_rate={}, acc1={:.4f}, acc5={:.4f}".format(
args.type, args.quant_method, args.param_bits, args.bn_bits, args.fwd_bits, args.overflow_rate, acc1, acc5)
print(res_str)
with open('overflow_rate_6810.txt', 'a') as f:
with open('acc1_acc5.txt', 'a') as f:
f.write(res_str + '\n')


Expand Down
20 changes: 14 additions & 6 deletions utee/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import numpy as np
import hashlib

from IPython import embed

class Logger(object):
def __init__(self):
self._logger = None
Expand Down Expand Up @@ -167,7 +169,7 @@ def forward(self, input):
input.data[:, 2, :, :].sub_(self.mean[2]).div_(self.std[2])
return self.model(input)

correct = 0
correct1, correct5 = 0, 0
n_passed = 0
if is_imagenet:
model = ModelWrapper(model)
Expand All @@ -179,16 +181,22 @@ def forward(self, input):
n_passed += len(data)
data = Variable(torch.FloatTensor(data)).cuda()
indx_target = torch.LongTensor(target)

output = model(data)
pred = output.data.max(1)[1] # get the index of the max log-probability
correct += pred.cpu().eq(indx_target).sum()
bs = output.size(0)
idx_pred = output.data.sort(1, descending=True)[1]

idx_gt1 = indx_target.expand(1, bs).transpose_(0, 1)
idx_gt5 = idx_gt1.expand(bs, 5)

correct1 += idx_pred[:, :1].cpu().eq(idx_gt1).sum()
correct5 += idx_pred[:, :5].cpu().eq(idx_gt5).sum()

if idx >= n_sample - 1:
break

acc = correct * 1.0 / n_passed
return acc
acc1 = correct1 * 1.0 / n_passed
acc5 = correct5 * 1.0 / n_passed
return acc1, acc5

def load_state_dict(model, model_urls, model_root):
from torch.utils import model_zoo
Expand Down
8 changes: 4 additions & 4 deletions utee/selector.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def stl10(cuda=True, model_root=None):
return m, dataset.get, False

def alexnet(cuda=True, model_root=None):
print("Building and initializing vgg16 parameters")
print("Building and initializing alexnet parameters")
from imagenet import alexnet as alx
m = alx.alexnet(True, model_root)
if cuda:
Expand Down Expand Up @@ -96,7 +96,7 @@ def vgg19_bn(cuda=True, model_root=None):
return m, dataset.get, True

def inception_v3(cuda=True, model_root=None):
print("Building and initializing inception v3 parameters")
print("Building and initializing inception_v3 parameters")
from imagenet import inception
m = inception.inception_v3(True, model_root)
if cuda:
Expand Down Expand Up @@ -144,15 +144,15 @@ def resnet152(cuda=True, model_root=None):
return m, dataset.get, True

def squeezenet_v0(cuda=True, model_root=None):
print("Building and initializing squeezenet parameters")
print("Building and initializing squeezenet_v0 parameters")
from imagenet import squeezenet
m = squeezenet.squeezenet1_0(True, model_root)
if cuda:
m = m.cuda()
return m, dataset.get, True

def squeezenet_v1(cuda=True, model_root=None):
print("Building and initializing squeezenet parameters")
print("Building and initializing squeezenet_v1 parameters")
from imagenet import squeezenet
m = squeezenet.squeezenet1_1(True, model_root)
if cuda:
Expand Down

0 comments on commit f8d9059

Please sign in to comment.