advertorch icon indicating copy to clipboard operation
advertorch copied to clipboard

ImportError: cannot import name 'zero_gradients' from 'torch.autograd.gradcheck'

Open ashok-arjun opened this issue 2 years ago • 12 comments

This issue exists because this line: from advertorch.attacks.utils import zero_gradients

which refers to the zero_gradients function in PyTorch is obsolete.

This is because zero_gradients is removed from PyTorch 1.9. It was present until PyTorch 1.7.

ashok-arjun avatar Dec 05 '21 07:12 ashok-arjun

This issue is fixed in the code. It may have not been updated in the pip repo. Please re-install advertorch from the code (pip install -e .). sorry for the inconvenience.

masoudhashemi avatar Dec 10 '21 14:12 masoudhashemi

Ah, that worked. Thanks!

LostOxygen avatar Dec 10 '21 16:12 LostOxygen

Got it, thanks! I will still keep this issue open as it exists when install using normal pip.

Feel free to close it,

ashok-arjun avatar Dec 11 '21 00:12 ashok-arjun

This issue appeared again. from torch.autograd.gradcheck import zero_gradients ImportError: cannot import name 'zero_gradients' from 'torch.autograd.gradcheck' (C:\Users\pc\AppData\Roaming\Python\Python37\site-packages\torch\autograd\gradcheck.py)

BetterZhuang avatar Apr 23 '22 11:04 BetterZhuang

This issue appeared again at pytorch 1.10 ImportError: cannot import name 'zero_gradients' from 'torch.autograd.gradcheck'

CHENBIN99 avatar May 13 '22 06:05 CHENBIN99

This solved for me in Colab:

!pip install --upgrade git+https://github.com/BorealisAI/advertorch.git

@masoudhashemi @gwding can someone please update the pip package?

fam4r avatar Jun 18 '22 09:06 fam4r

The issue still persists in version 1.12

anukriti15 avatar Oct 12 '22 10:10 anukriti15

still has this problem, can anyone give any help?

larksudo avatar Mar 24 '23 13:03 larksudo

The error seems to have changed a bit from the start, but still seems to be a persistent issue with zero_gradients:

cannot import name 'zero_gradients' from 'advertorch.attacks.utils' (/usr/local/lib/python3.9/dist-packages/advertorch/attacks/utils.py)

waite116 avatar Apr 03 '23 19:04 waite116

可以通过下面这个方法解决: from typing import Collection import torch import torchvision from torchvision import datasets, transforms from torch.autograd import Variable

from torch.autograd.gradcheck import zero_gradients 这句话运行不了,改为下面这段函数

import torch.utils.data.dataloader as Data import torch.nn as nn from torchvision import models import numpy as np import cv2

def zero_gradients(x): if isinstance(x, torch.Tensor): if x.grad is not None: x.grad.detach_() x.grad.zero_() elif isinstance(x, Collection.abc.Iterable): for elem in x: zero_gradients(elem)

lzb1616 avatar Apr 28 '23 08:04 lzb1616

`from typing import Collection import torch import torchvision from torchvision import datasets, transforms from torch.autograd import Variable

from torch.autograd.gradcheck import zero_gradients这句话运行不了,改为下面这段函数

import torch.utils.data.dataloader as Data import torch.nn as nn from torchvision import models import numpy as np import cv2

def zero_gradients(x): if isinstance(x, torch.Tensor): if x.grad is not None: x.grad.detach_() x.grad.zero_() elif isinstance(x, Collection.abc.Iterable): for elem in x: zero_gradients(elem)`

lzb1616 avatar Apr 28 '23 08:04 lzb1616

`from typing import Collection import torch import torchvision from torchvision import datasets, transforms from torch.autograd import Variable

from torch.autograd.gradcheck import zero_gradients这句话运行不了,改为下面这段函数

import torch.utils.data.dataloader as Data import torch.nn as nn from torchvision import models import numpy as np import cv2

def zero_gradients(x): if isinstance(x, torch.Tensor): if x.grad is not None: x.grad.detach_() x.grad.zero_() elif isinstance(x, Collection.abc.Iterable): for elem in x: zero_gradients(elem)`

don't know what the cv2 refers

linhanbin0453 avatar Oct 15 '23 10:10 linhanbin0453