https://www.notion.so/8148e6242b7344a1837c92d5d7d2724a?v=944e8b68bc3143fe878ae74e0b7d9281
빛의 블로그
2021년 4월 11일 일요일
2021년 4월 7일 수요일
AITech P-stage1 [Day 8] 앙상블 실패, f1loss로 학습해보는중
===================================
목표
어제 못했던 앙상블 해보기
==================================
행동
어제 mask, gender, age 각각의 모델에 대한 학습을 다 하고, 각 모델에 eval data 를 통과시켜 나온 결과를 합쳐 최종 결과를 내는 걸 만들었다. 결과는 실망스러웠다. 단일 모델로 했을 때보다 결과가 안 나왔기 때문이다.
age는 원래 딱 60살만 2 label을 가지지만 59살 이상을 2label로 가지게 했을 때 결과가 잘 나왔다. 또 epoch를 많이 돌리고 val loss와 val acc에 변화가 없어서 overfitting이라고 생각했지만 내가 overfitting이라고 생각한 checkpoint를 넣고 돌리면 결과가 더 잘 나왔다. 즉 학습을 엄청 많이 하는게 장땡인 것이다. 이거 말고 평소에 다른거 할 땐 언제나 overfitting이 일어나서 좀 낮은 epoch를 했어야 했는데 의외였다.
그래서 learning rate 도 처음부터 1e-5로 시작하고 lr이 줄어드는 step 조건도 줄이면서 진짜 진짜 val과 train에 변화가 없을 때 끝내고 있다. 또 loss가 acc이 목적이 아니라 f1 loss가 목적이 되었다는 것을 생각하며 모든 모델을 f1 loss로 학습시키고 있다. 어떻게 될 지는 잘 모르겠다.
==================================
회고
처음부터 앙상블로 시작했으면 작업시간이 줄어들었을 것 같긴 하다. 그래도 처음이라 notebook으로 작성한걸 py로 바꾸고, 단일 모델로 된걸 앙상블로 바꾸고 그 와중에 GPU memory out같은 오류 등을 겪었다. 이제 인지했고 이게 어떻게 보면 baseline code를 만드는 과정이었으니까 다음에 할 땐 괜찮아 질지도 모르겠다.
2021년 4월 6일 화요일
AITech P-stage1 [Day 7] 단일 모델 실험 끝, 앙상블 실험중..
=======================
피어세션
나이를 제일 빡센(깊은) layer. resnetnext 같은거
adamw
crossentropy에도 weight를 줄 수가 있다.
================================
마스터세션
vscode 방법들.
tumx. 꺼지더라도 실행하는 거인듯. 꼭 알아야 겠다.
dracula theme
image-tile-viewer
잘 안되면 reload
pytorch snippets. pytorch 코드 그냥 만들어주네
extract method. refactoring이 쉽다.
device checking.. train도 그냥 만들어주고..
디버깅 서버
jedi, pylance.
jedi는 느리다. pylance빠르다.
근데 pylance는 자동완성 못찾아서 사용하기 힘듬.
보통 pip install 보면 jedi 설치되어 있음.
디버깅시 justMyCode. 디버깅까지 빠른데 라이브러리 까지 못들어감. 종단점을 걸어도 안들어감. justmycode를 false로 하면 라이브러리 까지 들어감. 이래야 에러가 나타나게 된 data input type을 볼 수 있음. 어디서 에러가 났는지 확인 가능.
pytorch template. configuration file로 주는것도 가능.
power mode
================================
목표
어제 못끝낸 IDLE 끝내서 일단 단일모델 vgg19 하도록 만들기, efficientnet 해보기, 앙상블 해보기
================================
행동
일단 단일 모델로 돌리는 코드는 만드는데 성공했다. 모델도 클래스만 바꾸고 나머진 건드리지 않아도 동작하고, 저장한 모델을 불러오는데 불러올 때 어떤 모델을 사용해서 학습한건지 json에 들어있는 정보를 통해 알맞은 모델을 자동으로 불러온다. 또 단순히 저장된 모델을 불러오는게 아니라 몇번째 시도에서 몇번째 epoch로 저장된 checkpoint를 단순히 args 를 통해 설정할 수 있다. 내가 봐도 정말 잘 만들었다.
근데 문제는 앙상블이다. 단일모델용으로 만든 train 코드를 복사 붙여넣기로 만들긴 했지만 현재 GPU 메모리 초과 문제에 닥쳐있다. 각각 따로 학습시키거나 GPU를 매번 초기화하는 함수가 있나 등을 살펴봐야겠다.
==========================
회고
늦게 일어났다. 늦게 자서 그렇다.
GPU 메모리 문제에 닥칠 줄은 몰랐다. 코드에만 신경써서 그런 것 같다. 그래도 대략적인 틀은 짜놨으니 약간 안심한다. 그래도 내일모래가 끝이다. 사실상 내일이 끝이라고 생각해야 할 듯.
단일모델로는
15 sub_EfficientNet_b4_21y04m06d09_03_55_0.03_0.97_40.csv 76.7302% 0.7067
로 이게 최대인것 같다.