====================================
학습내용
voting으로 앙상블을 할 수도 있는데 여기서도 hard, soft를 사용할 수 있다.
K-fold
원래 멀쩡한 데이터가 있다면 그걸 data augmentation 할 수 있잖아? 그럼 data generator로 나온 결과도 같은 답이어야 함. 그래서 각각의 데이터들끼리 soft 결과 합을 해서 가장 일반적인 결과를 내놓는 방식으로 학습할 수도 있다.
물론 앙상블을 하는 모델 갯수만큼 학습 시간도 많이 늘어남.
https://optuna.org/#code_examples
파라미터도 학습으로 결정할 수 있게 만들수는 있지만 뭐가 좋은지 돌려보고 때려박아서 결정하는거라 정말 시간이 많이 걸린다. 저 optuna library는 뭐라는지 모르겠음.
디버깅 방법..
tensorboard, wandb.
tensorboard로 평소처럼 각 epoch에 대한 train loss, acc, ... 하는것도 볼 수 있고 어떤 입력 이미지에 어떤 결과를 내는지 등등도 볼 수 있다.
wandb는 딥러닝의 깃허브 같은 거라고 하는데 ipynb에서 바로 페이지에서 확인되고 파일로 저장하고 하니까 원격으로 할때 더 편하다는것 같다.
notebook? ide?
notebook은 그때그때 볼 때, 특히 EDA할때 편리. 한번 데이터를 불러놓고 이것저것 해보면서 볼 수 있으니까. 하지만 매번 그 많은 함수들을 복붙해야 함.
ide는 좀 번거롭긴 하지만 한번 .py로 저장해놓으면 불러오면서 사용 가능. 또 터미널에서 config.json이나 --arg 같은걸로 입력해줘서 바로 실행가능하게끔 만들 수 있으니까 구축해놓은 뒤 여러가지 실험을 해볼 때 편리.
kaggle등에서 다른사람이 한걸 볼땐 코드를 봐서 원리를 아는것도 중요하지만 왜 그 사람이 그런 코드를 무슨 생각으로 짰는지 설명을 보면 알 수 있다. 설명을 보고 그 사람의 발상 등을 알아내는게 큰 도움이 되는 듯.
최신논문과 그에따른 코드들을 paper에서 확인 가능.
또 공유하는 것을 주저하지 말것. 모르는거도 알 수 있고 내가 맞는지 확인도 가능하고 등 여러 이점이 많음.
==============================
피어세션
# DynamicBalanceSampler
train_x , val_x , train_y , val_y = train_test_split(df , df['label'] , test_size=0.3, shuffle = True )
train_dataset = CustomDataset(img_path , train_x , train_transforms)
val_dataset = CustomDataset(img_path , val_x , val_transforms)
sampler = data_catal.DynamicBalanceSampler(labels=train_dataset.get_labels())
train_loader = torch.utils.data.DataLoader(train_dataset,sampler=sampler, batch_size= batch_size , num_workers = num_workers)
val_loader = torch.utils.data.DataLoader(val_dataset, batch_size = batch_size , shuffle = False , num_workers = num_workers )
get_labels : 모든 label 가져오기
=========================
목표
vgg19말고 resnet32, efficientnet 같은걸로 사용해보기, 앙상블 해보기
ide 환경으로 만들기. cell이 너무 많아지니 힘들다.
=========================
행동
놀기만함...
========================
회고
시간을 꾸준히 많이 투자하자.
댓글 없음:
댓글 쓰기