torch.nn.Module
- 딥러닝을 구성하는 Layer의 base Class
- Input, Output, Forward, Backward정의
- 학습의 대상이 되는 parameter(tensor) 정의
class MyLiner(nn.Module):
def __init__(self, in_features, out_features, bias=True):
super().__init__()
self.in_features = in_features
self.out_features = out_features
self.weights = nn.Parameter(
torch.randn(in_features, out_features)) # output과 크기를 맞춰주기 위함
self.bias = nn.Parameter(torch.randn(out_features)) # bias 크기는 output과 같아야함
def forward(self, x : Tensor):
return x @ self.weights + self.bias
Backward
for epoch in range(epochs):
optimizer.zero_grad() # <- 이전의 grad값이 다음 단계에 영향을 안미치도록 초기화(필수)
outputs = model(inputs) # <- y^(y hat)
loss = criterion(outputs, labels) # criterion = torch.nn.MSELoss(size_average=False)
loss.backward()
optimizer.step()
DataLoader 클래스
- Data의 Batch를 생성해주는 클래스
- 학습직전(GPU feed전) 데이터의 변환을 책임
- Tensor로 변환 + Batch 처리가 메인 업무
- 병렬적인 데이터 전처리 코드의 고민 필요