728x90
Model
model은 시스템을 표현해주고 input을 주면 class를 구분해주는 것이다.
PyTorch
low-level, pythonic, flexibility
1. nn.Module
Pytorch 모델의 모든 레이어는 nn.Module 클래스를 따른다.
2. modules
"_ init _"에서 정의한 또 다른 nn.Module
3. forward
이 모델(모듈)이 호출 되었을 떄 실행 되는 함수
4. nn.Module Family
nn.Module을 상속받은 모든 클래스의 공통된 특징 -> 모든 nn.Module은 forward() 함수를 가진다.
5. Parameters
- 모델에 정의되어 있는 modules가 가지고 있는 계산에 쓰일 Parameter
- 각 모델 파라미터 들은 data, grad, requires_grad 변수 등을 가지고 있다.
Pretrained Model
모델 일반화를 위해 매번 수 많은 이미지를 학습시키는 것은 까다롭고 비효율적
-> 미리 학습된 좋은 성능이 검증되어 있는 모델을 사용하면 시간적으로 매우 효율적
-> torchvision.models을 사용하여 손쉽게 모델 구조와 Pretrained Weight를 다운로드 할 수 있다.
Transfer Learning
CNN base 모델 구조
Input + CNN Backbone + Classifier -> Output
- fully connected layer(fc) = classifier
- 내 데이터, 모델과의 유사성을 고려
Case by Case
Case1. 문제를 해결하기 위한 학습 데이터가 충분하다.
- 내가 해결하고자 하는 문제와 Backbone의 유사성이 높다면 Freeze, 낮다면 Trainable
Case2. 학습 데이터가 충분하지 않은 경우
- 유사성이 낮다면 사용하지 않는 것을 권장 (overfitting, underfitting이 발생될 수 있음)
728x90
'Boostcamp AI Tech' 카테고리의 다른 글
[Boostcamp Day-19] Image Classification - Ensemble (0) | 2021.08.27 |
---|---|
[Boostcamp Day-18] Image Classification - Training & Inference (0) | 2021.08.27 |
[Boostcamp Day-16] Image Classification - Dataset (0) | 2021.08.25 |
[Boostcamp 4주차] 피어세션과 학습 회고 (0) | 2021.08.24 |
[Boostcamp Day-15] Image Classification - Problem Definition (0) | 2021.08.24 |