Learning rate 조정
- minimum point에 빠르게 도달하기 위하여 learning rate 0.1에서 0.12로 수정
learning rate schduler 단계 추가
- learning rate를 단계적으로 줄여주는 stepLR의 단계를 기존 3단계에서 5단계로 각각 0.2씩 LR축소
train data 확보
- train data와 valid data를 9:1 비율로 분할하는 것이 아닌 일반화를 위하여 9.5:0.5 비율로 분할
data = datasets.ImageFolder(data_dir)
train_size = int(len(data)*0.95)
val_size = int((len(data)-train_size))
train_data,val_data = random_split(data,[train_size,val_size])
torch.manual_seed(3334)
print(f'train size: {len(train_data)}\nval size: {len(val_data)}')
Depth / width 실험
- 경우 1 : depth 28 / width 3
- 경우 2 : depth 16 / width 4
- 경우 3 : depth 10 / width 5
매개변수 정리 및 결과
- optimizer = SAM(model.parameters(), base_optimizer, rho=args.rho, adaptive=args.adaptive, lr=args.learning_rate, momentum=args.momentum, weight_decay=args.weight_decay)
- scheduler = StepLR(optimizer, args.learning_rate, args.epochs)
- batch size = 32
경우 1 : depth 28 / width 3
경우 2 : depth 16 / width 4
경우 3 : depth 10 / width 5