본문 바로가기
딥러닝/파이토치

Pytorch - RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [1, 512, 4, 4]] is at version 2; expected version 1 instead. Hint: the backtrace further above shows the oper..

by 프룹 2021. 8. 28.
반응형

# 개발 환경

Pytorch Version : 1.7.0

# 오류 내용

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [1, 512, 4, 4]] is at version 2; expected version 1 instead. Hint: the backtrace further above shows the operation that failed to compute its gradient. The variable in question was changed in there or anywhere later. Good luck!

 

# 해결

나같은 경우는 해당오류가 GAN으로 Inpainting하는 EdgeConnect 모델을 훈련할 적에 발생하였다.

 위 코드가 저자가 올려놓은 github의 edgeconnect 코드 부분인데, edge_connect.py에서 models.py에 있는 backward함수를 호출해서 dis_loss, gen_loss를 역전파시키게 된다. 쉽게 말하면 loss변수를 다른 파일의 스크립트에서 연전파를 하게 되는 것인데 옛날 pytorch에서는 지원을 했던 것 같은데, 최신 버전의 pytorch에서는 loss를 구한 스크립트에서 연전파도 해야 한다고 한다. 때문에 위 코드를 아래와 같이 바꾸면 정상적으로 코드를 실행 할 수 있다.

반응형

댓글