ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • torch.optim
    PyTorch 2020. 5. 22. 22:25

    신경망 훈련에는 SGD, Adam등의 상황에 따라 다양한 optimizer가 사용된다.

    파이토치에서는 torch.optim 모듈을 이용해서 optimizer를 지정하는데, 베이스 클래스인 torch.optim.Optimizer를 상속받아서 여러가지 optimizer 클래스가 미리 구현되어있다.

     

    1. optimizer 클래스 초기화

    제일 중요한 매개변수는 신경망의 파라메터이다. Variable 타입의 파라메터들을 iterable 오브젝트로 넣어줘야한다. 그 외에는 각 optimizer 타입에 따라 learning rate, weight decay 등을 넣어주면 된다.

    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
    optimizer = optim.Adam([var1, var2], lr=0.0001)

    예를 들면 SGD와 Adam optimizer를 위와 같이 정의할 수 있다.

     

    2. 사용법

    # zero the parameter gradients
    optimizer.zero_grad()
    
    # forward + backward + optimize
    outputs = net(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()
    • optimizer의 zero_grad() 함수로 신경망 파라메터들의 gradient를 0으로 초기화시킨다
    • loss값을 계산한 후, backward() 함수를 호출하여, 각 파라메터의 gradient를 계산한다.
    • 지정한 optimizer의 step() 한수를 호출하여 신경망 파라메터를 업데이트한다.
    • 이 과정을 모든 mini-batch에 대해서 반복한다.

    'PyTorch' 카테고리의 다른 글

    GPU 사용하기  (0) 2020.05.23
    nn.Dropout 으로 dropout 레이어 넣기  (0) 2020.05.23
    파이토치 모델 파라메터 저장/불러오기  (0) 2020.05.23
    torchvision으로 MNIST 데이터 로드하기  (1) 2020.05.23
    torch.nn.Module  (0) 2020.05.22
Designed by Tistory.