Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. import torch
  2. import torchvision
  3. import torchvision.transforms as transforms
  4. from tqdm import tqdm_notebook as tqdm
  5. import numpy as np
  6. import matplotlib.pyplot as plt
  7. from sklearn.metrics.pairwise import rbf_kernel
  8. import time
  9.  
  10.  
  11. train_loader = torch.utils.data.DataLoader(
  12. torchvision.datasets.MNIST('../data', train=True, download=True,
  13. transform=transforms.Compose([
  14. transforms.ToTensor()
  15. ])), shuffle=True)
  16. test_loader = torch.utils.data.DataLoader(
  17. torchvision.datasets.MNIST('../data', train=False, transform=transforms.Compose([
  18. transforms.ToTensor()
  19. ])), shuffle=True)
  20.  
  21. train_data = []
  22. train_label = []
  23. test_data = []
  24. test_label = []
  25. for data, target in tqdm(train_loader):
  26. train_data.append(data.numpy().ravel())
  27. train_label.append(target)
  28. train_data, train_label = np.array(train_data), np.array(train_label)
  29. for data, target in tqdm(test_loader):
  30. test_data.append(data.numpy().ravel())
  31. test_label.append(target)
  32. test_data, test_label = np.array(test_data), np.array(test_label)
  33.  
  34. gamma = 1. / test_data.shape[1]
  35. train_kernel = rbf_kernel(train_data, gamma=gamma)
  36. test_kernel = rbf_kernel(test_data, train_data, gamma=gamma)
  37.  
  38. print(clf.score(train_kernel, train_label))
  39. print(clf.score(test_kernel, test_label))
  40.  
  41. # compute robust error
  42. num_correct = 0
  43. eps_norm = 0.3
  44. for i in tqdm(range(0, 100)):
  45. score = np.dot(test_kernel[i, :], clf.coef_.T) + clf.intercept_
  46. if np.argmax(score) != test_label[i]:
  47. continue
  48. # now test the robustness of score
  49. diff = np.dot((clf.coef_ - clf.coef_[test_label[i]]) * 2 * gamma * test_kernel[i, :], test_data[i, :] - train_data)
  50. if np.any(np.linalg.norm(diff, ord=1, axis=1) * eps_norm > score[test_label[i]] - score) == False:
  51. num_correct += 1
  52. print(num_correct)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement