분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[Baseline / For Window] 한글 라벨로 인한 데이터 로드 에러 및 연속 폭발 수정 코드
베이스라인 돌리려 했지만, 윈도우 환경에서 대폭발이 일어나는 것을 확인했습니다.
1. /로 스플릿하는 부분을 \\에 [2]에서 [1]로 변경했습니다.
2. 이미지 주소에 한글이 있는 경우, cv2가 이미지 데이터를 읽지 못하는 문제를 해결합니다.
(중요!)이 코드는 train 폴더 내부의 각 폴더명을 0부터 18까지 변경하시고 돌리셔야 합니다.
3. 라벨을 숫자로 바꾸었기 때문에, label의 데이터 형식을 LongTensor로 변경했습니다.
4. 결과물 라벨이 한글이기에 엑셀에서 바로 열리지 않습니다.
submit. to_csv("이름.csv", encoding = "ansi")를 사용하면 결과물을 열어보실 수 있으나,
ansi로 인코딩된 csv파일을 제출하실 경우 0점을 경험하실 수 있습니다.(이 사실을 확인하기 위해 첫 날의 2회 제출 기회를 날렸습니다ㅠ)
완전 처음 배울 때 베이스라인을 돌릴 수 있도록 도움 주셨던 많은 고수분들처럼
많은 초보 분들이 익히시는 데에도 도움이 되었으면 좋겠습니다.
실력이 부족해 어거지로 돌아가게 만든 느낌이 강합니다 ㅠ
코드가 잘 돌아가지 않을 경우 댓글로 말씀해주세요!
늘 좋은 대회 제공해주시는 데이콘에도 감사합니다.
저야말로 감사합니다!
많이 배워갑니다. 감사합니다.
3. 라벨을 숫자로 바꾸었기 때문에, label의 데이터 형식을 LongTensor로 변경
이 부분에 대해서 제가 공부한 것 공유 드립니다.
우선 제일 먼저 label의 형식을 LongTensor로 변경한 이유는
'CrossEntropyLoss'를 계산 할 때 발생 할 수 있는 데이터 타입의 불일치 문제 때문일거라 추측합니다.
'CrossEntropyLoss'은 머신러닝에서 분류 문제를 해결 하기 위한 손실 함수입니다.
PyTorch의 nn.CrossEntropyLoss는 기본적으로 두 가지 입력을 받습니다.
1.모델 출력 (logits): 이 값들은 일반적으로 float 타입인 torch.FloatTensor입니다.
2.정답 레이블 (ground truth labels): 이 값들은 일반적으로 정수 타입인 torch.LongTensor 또는 torch.int64로 표현됩니다.
'CrossEntropyLoss'를 계산할 때 데이터 타입의 불일치가 발생하는 이유는
1.입력 데이터가 전처리 과정에서 type이 바뀌었을 경우
(numpy->PyTorch 텐서로 변환중 데이터 타입변경)
2.데이터 로더(DataLoader)를 사용하여 배치로 데이터를 가져올 떄 자동변환 X 원래 타입을 가져왔을 경우
->이를 해결 하기위해 레이블 텐서의 데이터 타입을 명시적으로 'torch.LongTenor'로 변환하면 됩니다.
조금이라도 도움이 되었으면 좋겠습니다!
보다 체계적인 피드백 정말 감사합니다.
에러가 나면 고치는 법만 알아 이러한 배경은 잘 몰랐습니다!ㅎㅎ
맥쓰는데 저는 그런 현상이 없긴했는데 여튼 코드 감사합니다!
네! 맥 환경에선 문제가 안생기네요!ㅎㅎ 디렉토리 주소 다르게 저장되거나 cv2 한글 디렉토리 못잡는 문제들은 자주 겪는 것 같습니다..
저는 이상하게 list index out of range가 발생했습니다.
df['label'] = df['img_path'].apply(lambda x : str(x).split('/')[-2])로 처리하니 해결되었습니다. 혹시 저랑 비슷한 상황이시면 참고하시면 도움이 될 듯 합니다.
같은 오류로 해결하느라 오래 걸렸는데 알려주셔서 감사합니다!!!!!
감사합니다. 좋은정보 감사합니다.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
그냥 제출하려다가 확인해보니 한글깨짐으로 큰일날 뻔 했네요.. 감사합니다!!