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)

자세한 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 |