in utils.py [0:0]
def add_noisy_gradient(extr, clf, device, grad_vec, C, std, include_linear=False):
noise = torch.randn(grad_vec.size()).to(device) * C * std
grad_perturbed = grad_vec + noise
extr.zero_grad()
for param in extr.parameters():
size = param.data.view(1, -1).size(1)
param.grad = grad_perturbed[:size].view_as(param.data).clone()
grad_perturbed = grad_perturbed[size:]
if include_linear:
clf.zero_grad()
for param in clf.parameters():
size = param.data.view(1, -1).size(1)
param.grad = grad_perturbed[:size].view_as(param.data).clone()
grad_perturbed = grad_perturbed[size:]
return noise