Python_Error

에러 해결: RuntimeError: CUDA error: device-side assert triggered

qlsenddl 2020. 12. 7. 20:00

 해당 에러는 구글링해서 알아보니 다양한 원인에 의해서 발생하는 것 같다. 해당 에러가 발생하는 하나의 예시 및 그에 대한 해결로 보면 좋겠다. 우선 나의 경우, Pytorch에서 BCE Loss로 Autoencoder를 학습하다가 난 에러이고, 개발 환경은 JupyterNotebook이다.


 해당 에러는 CUDA에서 발생한 에러이기 때문에 torch.device를 'cuda:0'로 하지 않고, 'cpu'로 하는 경우, 구체적으로 어떤 에러가 발생했는지 더 정확한 설명이 나온다. 그렇게 한 후 다시 코드를 실행해보면, 나 같은 경우에는 다음과 같은 에러 메시지가 나타났다.


RuntimeError: all elements of input should be between 0 and 1

 이 에러는 BCE Loss에서 input의 모든 요소값들이 0과 1사이여야 한다는 에러이다. BCE Loss는 loss(input, target)의 형태로 명령되는데, 이 때, target이 0과 1사이의 값을 가져야 하기 때문에 그렇지 않은 경우 에러가 발생한다.