딥러닝 모델은 Layer를 겹겹히 반복하여 쌓은 것이다.
nn.Module
은 이러한 Layer의 Base Class 이다.
- Input : 입력 데이터
- Output : 출력 데이터
- Parameter : 학습의 대상이 되는 Weight(Tensor)
- Forward : 예측값 계산
- Backward : AutoGrad을 통한 Weight 변화율 계산
- Optimize : Weight Update
nn.Module 내에서는 required_grad = True
로 지정되어 학습대상이된다.
대부분의 Layer에 Weights 값들이 지정되어 있기에 직접 지정할 필요는 없다.
→ Init 단계에서 각 모듈별 Parameter Load
BackWard 과정에서 criterion( y_hat, y )
을 통해 Loss 계산
BackWard 와 Optimizer 는 오버라이딩이 가능하지만, 직접 미분 수식을 작성해야 한다.
__init__(self), __len__(self), __getitem(self)__
정의 def __init__(self, x, y): # 초기 데이터 생성 방법 정의
self.data = x
self.labels = y
def __len__(self): # 데이터의 전체 길이 반환
return len(self.labels)
def __getitem__(self,idx): # idx가 주어졌을 때 반환하는 데이터 형태
data = self.data[idx]
label = self.labels[idx]
return (data,label)
데이터의 형태에 따라 각 함수를 다르게 정의
모든 것을 데이터 생성 시점에 처리하지 않고, 학습에 필요한 시점에 변환
Data의 Batch를 생성하는 Class
Feed 직전 데이터를 변환
데이터를 Tensor 형식으로 변환하고, Batch로 묶는 작업이 메인
DataLoader의 Parameters
batch_size : Batch의 크기
shuffle : 데이터 섞기의 여부
Sampler, batch_sampler : 인덱스를 정하는 기법
collate_fn : Map-style DataSet 에서 Sample List를 Batch 단위로 바꾸기 위함