728x90
반응형
모델을 학습하기 전, 필요한 파라미터들을 정의합니다. 파라미터는 다음과 같습니다.
손실 함수(loss function) : 학습하는 동안 예측값과 실제값의 오차를 구합니다.
- BCELoss : 이진 분류를 위해 사용
- CrossEntropyLoss : 다중 클래스 분류를 위해 사용
- MSELoss : 회귀 모델에서 사용
옵티마이저(optimizer) : 데이터와 손실 함수를 바탕으로 모델의 업데이트 방법을 결정합니다.
- optimizer는 step() 함수를 통해 전달받은 파라미터를 업데이트 함
- 모델의 파라미터별로 다른 기준(ex.학습률)을 적용시킬 수 있음
- torch.optim.Optimizer(params, defaults)는 모든 옵티마이저의 기본이 되는 클래스임
- zero_grad() 함수는 옵티마이저에 사용된 파라미터들의 기울기를 0으로 만듦
- torch.optim.lr_scheduler는 에포크에 따라 학습률을 조절할 수 있음
- 옵티마이저에 사용되는 종류는 다음과 같다 ex. optimAdam, optimRMSProp...
학습률 스케줄러(learning rate scheduler) : 미리 지정한 횟수의 에포크를 지날 때마다 학습률을 감소시켜 줍니다. 학습률 스케줄러를 이용하면 학습 초기에는 빠른 학습을 진행하다가 전역 최소점 근처에 다다르면 학습률을 줄여서 최적점을 찾아갈 수 있도록 해 줍니다.
- optim.lr_scheduler.LambdaLR : 람다 함수를 이용하여 그 함수의 결과를 학습률로 설정합니다.
- optim.lr_scheduler.StepLR : 특정 단계마다 학습률을 감마 비율만큼 감소시킵니다.
- optim.lr_scheduler.MultiStepLR : StepLR 과 비슷하지만 특정 단계가 아닌 지정된 에포크에만 감마 비율로 감소시킵니다.
- optim.lr_scheduler.ExponentialLR : 에포크마다 이전 학습률에 감마만큼 곱합니다.
- optim.lr_scheduler.CosineAnnealingLR : 학습률을 코사인 함수의 형태처럼 변화시킵니다. 따라서 학습률이 커지기도 작아지기도 합니다.
- optim.lr_scheduler.ReduceLROnPlateau : 학습이 잘되고 있는지 아닌지에 따라 동적으로 학습률을 변화시킬 수 있습니다.
지표(metrics) : 훈련과 테스트 단계를 모니터링 합니다.
from torch.optim import optimizer
# 손실함수
criterion = torch.nn.MSELoss()
# 옵티마이저
optimizer = torch.optim.SGD(model.parameters(), lr = 0.01, momentom = 0.9)
# 학습 스케줄러
scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer = optimizer,
lr_lambda = lambda epoch : 0.95 ** epoch)
for epoch in range(1, 100+1): # 에포크 수만큼 데이터를 반복하여 처리
for x, y in dataloader: # 배치 크기만큼 가져와서 학습 진행
optimizer.zero_grad() # 파라미터의 기울기를 0으로 만듦
loss_fn(model(x), y).backward()
optimizer.step # 전달받은 파라미터 업데이트
scheduler.step()
728x90
반응형
'pytorch' 카테고리의 다른 글
[pytorch] Dropout (0) | 2023.04.06 |
---|---|
[pytorch] 3. 모델 학습 (파이토치 학습 절차) (0) | 2023.04.05 |
[pytorch] 1. 모델 정의 (nn.Module / nn.Sequential) (0) | 2023.03.22 |
[pytorch] tensor(텐서) 생성/이해/조작 (0) | 2023.03.19 |
[pytorch] pytorch 특징 / pytorch 아키텍처 / pytorch 장점 / pytorch API 종류 (0) | 2023.03.14 |