Manduss life

[DeepLearning] Dropout/커널 크기/train, inference시 auto gradient 설정 본문

전산/Deep Learning

[DeepLearning] Dropout/커널 크기/train, inference시 auto gradient 설정

만두쓰 2023. 1. 31. 18:23

Dropout

  • self.dp1 = nn.Dropout2d(0.5)  
    --> 이전 뉴런을 0.5 확률로 제거 

출처 : https://heytech.tistory.com/127

 

커널 크기

  • 커널 크기를 크게 잡으면 정밀해지지 못함.
  • 이미지의 가장 중요한 시각적 특징은 특정 범위에서 발견되므로, 시각적 패턴을 찾으려면 한번에 인접한 픽셀 몇 개만을 보는 작은 저널을 쓰는 것이 낫다. 3x3 커널 크기를 가장 많이 쓴다. 

 

optim.zero_grad()

  • 매 학습마다 gradient값을 0으로 설정해주어야한다. 
  • Pytorch에서는 gradients값들을 추후 backward를 해줄때 계속 더해주기 때문이다. 
  • 출처 : https://algopoolja.tistory.com/55

 

with torch.no_grad():

  • inference 시에 해주는 자동으로 gradient를 계산하는 것을 끄는 기능이다.
  • 저 함수를 사용하지 않을 시, backward()를 사용하지 않는다면, 계산만 하고, 최적화 과정은 수행되지 않는다. 
  • 그러므로, weight값의 변형을 막기 위함보다는, 메모리 사용량을 줄이고, 연산을 줄이기 위함이다.
  • inference 시에 또 작성하는 함수가 있는데, model.eval()이다.
    • 이는, dropout, batch normalizatoin 등의 train에서만 사용되고, test 시에는 사용되지 않는 기능들을 위해 inference mode라고 설정하는 목적이다.
  • 출처 : https://coffeedjimmy.github.io/pytorch/2019/11/05/pytorch_nograd_vs_train_eval/ 

 

Comments