728x90
반응형

StyleGAN을 학습하던 중 다음 오류가 발생하는 것을 확인하였다. 

Epoch 1/250, Iter 400, Gen Loss: nan, Disc Loss: nan

학습과 함께 출력하는 사진도 오류 없이 나오고 있어서 오류가 발생하지 않고 있다고 생각했는데 loss값이 nan이 나오고 있었던 것이다. 

한 번도 이랬던 적이 없어서 찾아보았는데 이유가 여러 가지가 있었다.

 

오류 원인(추정)

  1. 학습률(Learning Rate)이 너무 큼: 학습률이 너무 큰 경우, 모델의 가중치가 너무 빠르게 업데이트되어 숫자가 발산하거나, 손실 함수 계산 중에 NaN 값이 나올 수 있음
  2. 입력 데이터에 NaN 또는 Inf 값이 포함됨: 학습 데이터에 잘못된 값(NaN, Inf)이 포함되어 있을 경우, 손실 함수 계산 중에 문제가 발생할 수 있음
  3. 그래디언트 폭발(Gradient Explosion): 역전파 과정에서 그래디언트가 너무 커져서 가중치가 크게 업데이트되고, 이로 인해 손실 함수가 NaN이 될 수 있음
  4. 잘못된 Loss Function 계산: 손실 함수 자체에서 로그 함수 또는 나눗셈과 같은 연산 중 0이나 매우 작은 값이 들어가 NaN이 발생할 수 있음
  5. 모델 가중치 초기화 문제: 가중치 초기화가 제대로 이루어지지 않으면, 학습 초기에 값이 발산하여 손실 함수가 NaN이 될 수 있음
  6. 불안정한 최적화 알고리즘: 사용 중인 최적화 알고리즘이 데이터나 네트워크 구조에 맞지 않아 불안정한 업데이트가 발생할 수 있음

 

해결 방법

본인은 학습률을 줄이는 방식으로 해결했다!

lr이 0.002로 설정되어 있었는데 0.0005로 줄이니 학습이 잘 반영되어 loss가 잘 출력되는 것을 확인할 수 있었다. 

728x90
반응형
LIST
성장중 •͈ᴗ•͈