- Variance가 높은 경우
-> Bagging기법 활용- Bias가 높은 경우
-> Boosting기법 활용
- Hard Voting
: 다수결- Soft Voting
: 예측값 평균
- train set과 validation set을 바꾸어가며 성능을 확인하는 방법
- Stratified K-Fold
: split시에 class 분포까지 고려 함
- 테스트 시에도 augmentation을 하여 label 예측
- 테스트 데이터가 가질 수 있는 variance를 고려함
- 앙상블 효과는 확실히 있지만, 그만큼 학습, 추론 시간이 배로 소모됨
- 시스템의 매커니즘에 영향을 주는 주요한 파라미터
ex)Hidden layer의 개수
,K-fold
,loss파라미터
,dropout
,batch size
,learning rate
,regularization
,optimizer 파라미터
등Optuna
import optuna ` def objective(trial): x = trial.suggest_uniform('x', -10, 10) return (x - 2) ** 2 ` study = optuna.create_study() study.optimize(objective, n_trials=100) ` study.best_params # {'x':2.002108}
- 모델 성능 확인
from torch.utils.tensorboard import SummaryWriter logger = SummaryWriter(log_dir=f'results/{name}") ` logger.add_scalar('Train/loss', train_loss, epoch * len(train_loader) + idx) logger.add_scalar('Train/accuracy', train_acc, epoch * len(train_loader) + idx)
- 학습 이미지를 확인할 수 있음
for idx, train_batch in enumerate(train_loader): inputs, labels = train_batch ` grid = torchvision.utils.make_grid(inputs) logger.add_image('images', grid, 0) logger.add_graph(model, inputs)
- 사용법
tensorboard --logdir PATH # log가 저장된 경로 --host ADDR # 원격 서버에서 사용시 0.0.0.0(default localhost) --port PORT # 포트번호
- 딥러닝 로그의 깃허브 같은 느낌
- 터미널에서
wandb login
입력 후API key
입력- 원격저장소에 저장
import wandb ` ## --wandb iniatialize with configuration wandb.init(config={'batch_size' : batch_size, 'lr' : lr, 'epochs' : num_epochs, 'backborn' : name}) ` # logging wandb train phase wandb.log({ 'Train loss' : train_loss, 'Train acc' : train_acc }) ` # logging wandb valid phase wandb.log({ 'Valid loss' : val_loss, 'Valid acc' : val_acc })
1. Jupyter Notebook
- EDA할때 편리
- interactive
2. Python IDLE
구현은 한번만
,사용은 언제든
,간편한 코드 재사용
- 디버깅 기능
- 자유로운 실험 핸들링
python train.py --config ./config.json
python train.py --config ./config_resnet.json
python test.py --config ./config_test.json
분석코드
보다는 설명글을 유심히 보세요
- 필자가 생각하고 있는 흐름(코드의 정체성)을 읽을 수 있다.
- 코드를 볼 때는 디테일한 부분까지
- 언제든 활용할 수 있을 정도로 이해하기
- Papers with Codes
- 최신 논문과 그 코드까지 확인가능
- 공유하는 것을 주저하지 마세요
- 새로운 배움의 기회가 될 수 있다.