세션 1 : model의 경량화 (12조)
참고
- 모델의 크기 줄이기 - pruning - [참고 문헌], Quantization(양자화)(https://arxiv.org/abs/1506.02626)
- 네트워크 구조 자체 변경 - Light weight architecture
ex) SqueezeNet, MobileNet, ShuffleNet, NAS(Neural Architecture Search), MNasNet
세션 2 : 외부 경진대회 (10조)
세션 3 : lv.3 랜덤 프로젝트 구상 (4조)
transforms.Resize: 이미지의 크기를 조정
transforms.CenterCrop: 이미지의 중앙 부분을 잘라낸다
transforms.RandomCrop: 이미지의 임의 부분을 잘라낸다
transforms.RandomHorizontalFlip: 이미지를 무작위로 좌우 반전
transforms.ColorJitter: 이미지의 채도, 명도, 대조 등을 무작위로 변경
transforms.RandomRotation: 이미지를 임의의 각도로 회전
transforms.RandomErasing: 이미지에서 무작위로 일부 영역을 삭제
qd_train_dataset = QuickDrawDataset(train_data, train_label, transform)
qd_val_dataset = QuickDrawDataset(val_data, val_label, transform_val)
qd_train_dataloader = DataLoader(qd_train_dataset, batch_size=64, shuffle=True, drop_last = True)
qd_val_dataloader = DataLoader(qd_val_dataset, batch_size=64, shuffle=True, drop_last = True)
Quickdraw dataset은 상당히 얇은 선의 이미지들로 이루어졌습니다. 이런 경우, blur augmentation을 적용해 이미지를 넓게 만들어주는 것이 성능 향상에 도움이 될 수 있습니다. 왜 blur augmentation이 모델 성능 향상에 도움이 되는지 생각해보세요.
: blur로 인해 tensor값이 변해서(정확히는 선이 차지하는 영역이 넓어지면서 tensor의 값이 변해) 구조적인 특징을 더 명확하게 할 수 있을 것 같다.
Augmentation의 순서 역시 중요한 요소가 될 수 있습니다. Blur를 먼저 적용하고 크게 resize하는 경우와 resize를 먼저 하고 blur를 적용하는 경우, 이미지가 어떻게 달라질지 예상해보시고, 실제 augmentation package에 따라 결과가 어떻게 나타나는지도 확인해보세요. 그리고 Geometric augmentation의 경우에 대해서도 순서가 어떻게 영향을 미칠지 생각해보세요.
import torch.nn as nn
import torch.optim as optim
# 예시 모델 정의
model = nn.Sequential(
nn.Linear(10, 20),
nn.ReLU(),
nn.Linear(20, 2)
)
# 모든 가중치를 학습 가능한 파라미터로 설정
for param in model.parameters():
param.requires_grad_(True)
# optimizer 정의
optimizer = optim.Adam(model.parameters(), lr=0.001)
시각화는 train 전, 진행 중, 후 모두 진행할 수 있음
시각화를 잘 할 수 있는 방법
다양한 시각화 방법을 알기
인지적 관점에 대한 공부를 추천
본인의 결과를 공유하는 것 + 관심 풀을 넓히기 + 영어 공부가 중요
코딩테스트 정답 코드보고 공부를 하고 안 보고 다시 짜보기...
나는 구현문제를 봐야할 것 같다..ㅎ