Closed Dongwoo-Im closed 2 years ago
wandb_setup_sharing.py에 scheduler, optimizer가 들어가지 않은 이유가 있을까요?
복사하신 다음, 파일 이름 바꾸고 api_key & project_name 바꾸시면 됩니다!
이 부분이 wandb_setup_sharing.py를 복사해 이름을 wandb_setup.py로 바꾸고 각자 api_key & project_name을 넣으면 된다고 이해했는데 맞나요??
@omocomo optimizer랑 scheduler 없는건 실수입니다..ㅎ 그리고 제가 의도한 wandb_setup_sharing.py 사용법은 이해하신게 맞습니다!
도연님 코드 리뷰 반영해서 wandb_setup_sharing.py
에 optimizer, scheduler 추가 했습니다!
그리고 smp_model.py
에서 다양한 모델 사용할 수 있도록 해놨습니다.
추후 sweep을 위해서도 모델 parameter들을 관리해야 할텐데, 어떤 식으로 할지는 고민되네요..
다른 Loss는 문제없이 돌아가는데 SoftCE Loss는 수정이 필요할 것 같습니다.
return smp.losses.SoftCrossEntropyLoss('multiclass')
위와 같은 오류가 발생했고
return smp.losses.SoftCrossEntropyLoss(smooth_factor=0.1)
Documentation을 참고해 smooth_factor를 주고 실행했을 때 문제 없이 돌아갔습니다.
추가적으로 Loss, Scheduler 등의 종류 선택은 config.yaml에서 가능한데 각각의 Parameter값들을 조절하고 싶다면 loss.py나 scheduler.py에서 수정해 사용하면 되는건지 궁금합니다.
@omocomo softCE는 한번도 안써봤는데 다시 확인해보곘습니다!
네, 말씀하신 것처럼 model, optimizer, scheduler 등 Unit에 따라 관리해야 하는 parameter들이 제각각 다릅니다. 이를 관리하기 위한 사용 방법은 크게 3가지 입니다.
3가지 모두 여러 곳을 수정해야 하는 점이 불편하기 때문에, 혹시 더 좋은 방법이 생각나시면 공유해주셔도 좋을 것 같습니다.
yaml 파일에서 None을 입력하면 'None'으로 인식하는 문제가 있어서, smp_model.py 에서 이를 None으로 바꿔주는 코드를 넣었습니다.
@omocomo 말씀해주신 softCE loss 수정했고, 다른 loss들도 추가해뒀습니다!
저도 확인했습니다! 저같은 경우는 DeeplabV3+로 돌렸는데 model의 output shape이랑 masks shape이 다르다는 오류가 났었는데요 이건 smp_model.py의 deeplabv3plus부분의 upsampling 을 8이 아닌 4로 해주니까 해결되었습니다:) 앞에서 동우님이랑 도연님이 말씀해주신 것처럼 모델마다 받아야 하는 파라미터들이 달라서 헷갈리기도 쉽고 sweep쓸때도 주의해야겠네요
@seonahmin 반영했습니다. 감사합니다.
Deeplapv3plus upsampling 처럼 바뀌면 오류가 나는 것들은 혼란 방지를 위해 args에서 뺴버려도 될 것 같네요!
What is this PR?
feat/torch2 branch를 refactor하는 PR입니다.
Changes
전체적인 컨셉은 다음과 같습니다.
torch/config.yaml
에서 config를 가져옵니다.wandb_setup.py
의get_sweep_config
함수로 config를 가져옵니다.wandb_setup_sharing.py
: wandb 코드 공유를 원활히 하기 위한 공유 목적 파일입니다.wandb_setup.py
: api_key & project_name 제외하고wandb_setup_sharing.py
에서 복붙 후 사용하시면 됩니다.전체적인 흐름은 다음과 같습니다.
train.py
: args 생성 & config load >>> args + config = args >>> 변경점 args에 기록 >>> save args on yaml & wandbinference.py
: args 생성 & train_config load >>> args + config = args >>> (현 코드에서는 변경점 없음) >>> args 저장다음은 feat/torch2 branch와 달라지는 부분에 대한 설명입니다. 설명이 조금 빈약할 수 있습니다. ㅠㅠ
test.py
: 쓰지 않는 파일 삭제.gitignore
: 현재 코드에 맞게 수정dataset.py
: fold별 data.json load 가능transform.py
: augmentation 추가/삭제 용이하게 바꿈smp_model.py
: smp 라이브러리의 다양한 모델을 사용할 수 있음optimizer.py
&scheduler.py
&loss.py
:get_{}
함수로 원하는 것을 return받음train.py
&inference.py
&utils.py
: args & config 관리 + 그중에서도 save 경로에 신경썼습니다.To reviewers