728x90
반응형
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
전체 네트워크 모델 중, 일부 레이어만 requires_grad = True로 셋팅했는데, 특정 구간에서 loss.backward()를 수행할 때, 다음과 같은 에러가 난다.
'''
.
.
.
앞단 : LOSS 계산하는 라인
.
.
'''
optimizer.zero_grad()
loss.backward() #>>여기서 에러 발생
optimizer.step()
실제 해당 구간에서 loss를 print해보면 단순한 cuda Tensor가 나오는데,
print(loss)
>>> tensor(1.5298, device='cuda:0')
이 사이트에서 loss에도 requires_grad를 설정해주라길래 시도해봤더니 된다.
결론적으로 아래처럼 추가해줬더니 잘 돌아간다. optimizer 변경하고 별 ㅈㄹ 다 했는데....
optimizer.zero_grad()
loss.requires_grad_(True)
loss.backward()
optimizer.step()
아래 블로그에서는 loss를 누적하는 Variable값을 torch.cat으로 변경해 list를 처리했더니 grad가 제대로 나왔다고 한다.
https://blog.naver.com/wjddudwo209/222421972412
728x90
반응형
'사소한 Tip . 오류 해결법' 카테고리의 다른 글
pytorch batchnormalization freeze (0) | 2021.10.15 |
---|---|
Anaconda 아나콘다 환경 내보내기(Export) / anaconda 환경 공유, 복사 (0) | 2021.10.15 |
Layer 일부 Freeze, fine-tuning (0) | 2021.10.13 |
JupyterLab 테마 변경하기 (0) | 2021.10.13 |
[OpenCV Error] cv2.error: OpenCV(4.5.3) :-1: error: (-5:Bad argument) in function 'resize' (0) | 2021.09.15 |