-
Notifications
You must be signed in to change notification settings - Fork 83
/
Copy pathcifar_evaluate.py
66 lines (50 loc) · 1.59 KB
/
cifar_evaluate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# import waitGPU
# import setGPU
# waitGPU.wait(utilization=20, available_memory=10000, interval=60)
# waitGPU.wait(gpu_ids=[1,3], utilization=20, available_memory=10000, interval=60)
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
from torch.autograd import Variable
import torch.backends.cudnn as cudnn
cudnn.benchmark = True
import torchvision.transforms as transforms
import torchvision.datasets as datasets
import random
import setproctitle
import problems as pblm
from trainer import *
import math
import numpy
def select_model(m):
if m == 'large':
# raise ValueError
model = pblm.cifar_model_large().cuda()
elif m == 'resnet':
model = pblm.cifar_model_resnet(N=1, factor=1).cuda()
else:
model = pblm.cifar_model().cuda()
return model
torch.manual_seed(0)
torch.cuda.manual_seed_all(0)
random.seed(0)
numpy.random.seed(0)
if __name__ == "__main__":
args = pblm.argparser_evaluate(epsilon = 0.0347, norm='l1')
print("saving file to {}".format(args.output))
setproctitle.setproctitle(args.output)
test_log = open(args.output, "w")
_, test_loader = pblm.cifar_loaders(1)
d = torch.load(args.load)
model = []
for sd in d['state_dict']:
m = select_model(args.model)
m.load_state_dict(sd)
model.append(m)
best_err = 1
epsilon = args.epsilon
# robust cascade training
err = evaluate_robust_cascade(test_loader, model,
args.epsilon, 0, test_log, args.verbose,
norm_type=args.norm, bounded_input=False, proj=args.proj)