AI | ML/코드

[PyTorch] RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation 에러

깜태 2021. 6. 28. 11:15
728x90

에러명은 아래와 같았다.

 

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [64, 4]], which is output 0 of SoftmaxBackward, is at version 64; expected version 0 instead. Hint: enable anomaly detection to find the operation that failed to compute its gradient, with torch.autograd.set_detect_anomaly(True).

 

원인을 자세히 보면, inplace operation에서 문제가 생겼다는 내용인데

 

내 모델에서는 softmax함수를 썼을 때 inplace가 되는 것 같아서 clone()을 붙였더니 해결되었다.

 

검색해보니, 흔한 문제 중 하나는 torch.nn.ReLU 함수 사용 때 생기는 문제로 torch.nn.ReLU(inplace=False)를 하면 된다고 한다.

 

참고 : https://github.com/NVlabs/FUNIT/issues/23

728x90