import torch
import torchvision
model = torchvision.models.resnet18(pretrained=False)

1) Stochastic Gradient Descent

optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

2) Stochastic Gradient Descent with Momentum

optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

3) Stochastic gradient descent with Nesterov’s momentum

optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9, nesterov=true)

4) Adam (Algorithms with Adaptive Learning Rates)

• Adaptive moment estimation

• It uses the first moment and the second moment.

• A variant on the combination of RMSProp and momentum

optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
 
5) Scheduling
optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1)
 
• Adaptive learning rates
• 첫번째 30개의 epoch에서는 0.1의 gradient를 사용하고 다음 30부터 60번째 epoch에서는 0.01의 gradient를 사용한다.
 
for epoch in range(400): 
    running_loss = 0.0
    for data in trainloader: 
        inputs, values = data 
        optimizer.zero_grad() 
        outputs = model(inputs) 
        loss = criterion(outputs, values) 
        loss.backward() 
        optimizer.step()  # 역전파를 진행하고 가중치 업데이트
        ...
 
    scheduler.step() # 스케줄링을 통한 학습률 조정 (outer for문에 선언해야 한다)
 
 

※ 참고자료 (https://www.slideshare.net/yongho/ss-79607172)

다양한 optimizer가 존재한다.

 

자세한 Offical document는 아래 링크에서 확인할 수 있습니다.

https://pytorch.org/docs/stable/generated/torch.optim.SGD.html

 

'파이토치' 카테고리의 다른 글

[파이토치] LSTM / GRU  (0) 2022.02.14
[파이토치] RNN  (0) 2022.02.14
[파이토치] CNN  (0) 2022.02.14
[파이토치] Cross-Validation  (0) 2022.02.14
[파이토치] Neural Networks  (0) 2022.02.14

+ Recent posts