pytorch
-
torch.nn.Module.parameters() 는 정확히 어떤 값을 돌려줄까?PyTorch 2020. 5. 28. 10:13
신경망 파라메터를 optimizer에 전달해 줄 때, torch.nn.Module 클래스의 parameters() 메소드를 사용한다. optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9) 위와 같은 경우, parameters()는 정확히 어떤 값들을 반환해주는지 궁금해졌다. 공식 문서를 보면, parameters() 메소드는 모듈의 파라메터들을 iterator로 반환한다고 적혀있다. Example 부분을 보면 파라메터 오브젝트의 타입이 torch.Tensor인걸 알 수 있다. 파라메터 오브젝트에 관한 더 자세한 설명 설명은 공식 문서의 torch.nn.Parameter 클래스 부분에 나와있는데, torch.nn.Parameter 클래스는 to..
-
torch.optim.lr_scheduler를 이용하여 learning rate 조절하기PyTorch 2020. 5. 24. 17:03
요즘 knowledge distillation 논문[Hinton14]을 읽고 있다. 여기에 나온 대로 3층 퍼셉트론을 구현해서 MNIST 데이터를 학습시켜봤는데, 적혀있는 것 보다 낮은 성능이 나왔다. 네트워크 구조는 제대로 구현한 것 같은데, optimizer 옵션이 다른것이 원인인듯 했다. 그래서 learning rate, batch size 등을 논문에 나온 내용과 똑같이 수정해보려고 한다. 사실 자세한 optimizer 옵션은 이전 논문[Hinton12]에 나와있는데, 다음과 같이 적혀있다. 위 수식의 핵심은, learning rate과 momentum을 epoch수에 따라 변화시키는 것이다. learning rate : 10에서 시작해서, 각 epoch마다 0.998을 곱하여 점점 줄인다 mom..
-
파이토치 모델 파라메터 저장/불러오기PyTorch 2020. 5. 23. 16:52
파이토치로 신경망 모델 파라메터를 학습시키는데는 시간이 많이 걸린다. 그래서 한번 학습해서 얻어진 파라메터를 소중히 보관해야하는 방법을 알아봤다. 1. 저장하기 torch.save(model.state_dict(), 'PATH.pth') torch 모듈의 save() 함수와, torch.nn.Module의 state_dict()함수를 사용한다. state_dict()는 모델의 파라메터를 dictionary 타입으로 반환해 주고, save() 함수는 인수로 들어온 오브젝트를 파일로 저장해준다. 2. 불러오기 model.load_state_dict(torch.load('PATH.pth')) model.eval() torch 모듈의 load() 함수와, torch.nn.Module의 load_state_dic..
-
torch.optimPyTorch 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 = o..