본문 바로가기
카테고리 없음

일상의 작은 변화로 삶에 활력을 불어넣는 법

by Cash_money 2024. 5. 14.
728x90

 

nan

원래는 데이터를 가지고 이진 분류의 형태로 결과를 출력하는 모델을 만들었기 때문에 마지막 Dense layer의 노드수를 '2'로 설정했었다. 하지만 Y를 다르게 설정하여 총 5개의 클래스로 분류하는 모델을 구축했는데, 이 마지막 출력 노드수를 변경하지 않고 그냥 모델 학습을 시켰기 때문에 loss가 nan이 나오게 된 것!나에게 해당되는 원인은 6번이었다. 6️⃣ 데이터와 outputsize가 불일치한다.그 이유를 검색해본 결과, 다음과 같은것들이 원인 & 해결방법이 될 수 있다.주의할 점은 nan_to_num은 PyTorch 1.8.0 이후부터 지원된다. 학습 코드에 위 코드를 추가해주고 실험을 하면, NaN loss가 발생하는 즉시 실행이 멈추고 NaN을 유발한 라인을 출력해준다. 주로 division by zero나 매우 작은 값에 대한 log 연산이 NaN loss를 유발한다. NaN은 loss 연산 뿐만 아니라 forward 연산, backward 연산에서도 발생할 수 있으므로 직접 찾으려면 힘든데, 위 코드를 쓰면 간편하다.먼저 torch.autograd 함수 중에 NaN loss가 발생했을 경우 원인을 찾아주는 함수가 있다.연구를 하면서 요즘 많이 겪는 문제가 NaN loss이다. 커스텀 레이어와 loss를 쓰다 보니 미처 파악하지 못한 예외가 생긴다. 그래서 NaN loss나 output이 발생했을 때 원인을 찾고 해결하는 방법에 대해 짧게 적어보려고 한다. 이와 같이 정상적인 값의 화소들에는 34번 컬러테이블의 색상들이 제대로 반영되어 있고 NaN 값인 화소들은 그냥 흰색으로 처리됩니다. 그러면 정상적인 값의 화소들과 NaN인 화소들 사이의 구분이 명확해집니다. 따라서 DG 체계에서 2차원 데이터를 이미지 형태로 표출할 때 NaN 값인 화소들을 별도로 구별하여 표출하려면 대략 이러한 방식으로 처리하는 것도 약간 복잡해 보일 수도 있지만 하나의 좋은 대안이 될 수 있습니다. 그 외에도 이러한 방식의 표출에 있어서 그림 내에 컬러바까지 함께 표시하고자 할 경우도 있을텐데요. 그 경우에는 DG 체계에서 컬러바를 표시하는 방법을 소개한 관련 게시물의 내용을 참조하여 처리하면 됩니다.표출 결과는 다음과 같습니다.그런데 오늘은 이러한 이미지 데이터의 표출을 DG 체계에서 하는 경우를 생각해보고자 합니다. 일단 동일한 데이터를 DG 체계에서 표출해봅시다. 그 과정은 다음과 같습니다. 이와 같이 보라색 계열로 시작하여 붉은색 계열로 끝나는 색상들로 구성되어 있습니다. 이제 IMAGE 함수에 의하여 이 컬러테이블이 적용되어 데이터가 표출된 결과를 봅시다.선택하신 기간에 등록된 글이 없습니다.다른 카테고리를 선택하시거나, 검색 기능을 활용해 보세요. 선택하신 카테고리에 해당하는 글이 없습니다.다른 태그를 선택하시거나, 검색 기능을 활용해 보세요. 선택하신 태그에 해당하는 글이 없습니다.두 단어 이상의 키워드로 검색 하신 경우, 정확하게 띄어쓰기를 한 후 검색해 보세요.검색어의 단어 수를 줄이거나, 보다 일반적인 단어로 검색해 보세요.입력하신 단어의 철자가 정확한지 확인해 보세요.__

728x90