토막 지식 #1

공부중에 찾아봤지만 간단한거라 한페이지 쓰기 귀찮은것들

num_workers

  • GPU 최대한 갈구기 위해 데이터 로드시 [num_workers] 수를 지정한 만큼 서브 프로세스를 할당하여 작업진행
  • 쓸데 없이 많이 설정하면 물리 코어 숫자상의 한계로 오버헤드 발생
  • 멀티 GPU 환경 기준 [GPU 갯수] x 4 만큼 설정하면 좋다는 카더라~ (페북 누군가가 어디 써놨다더라~)
  • 쓰레드를 안쓰는 이유는 파이썬 구조상 안된다 카더라~

Weight initialization

선 결론) 어차피 라이브러리에서 자동으로 해준다.

  • Weight initialization이 딥 러닝 학습에 꽤 중요하다.
  • 모두 0으로 설정하면 학습 효율이 떨어진다.
  • 요즘 라이브러리 들은 선언시에 적당히 초기화 해준다.
  • 굳이 지정한다면 이유는 옛날 관습, 원하는 초기화 분포가 있을 경우 등에 직접 지정할 수 있다.

RAdam

  • Adam을 포함한 기존 Adaptiver learning rate를 이용하는 옵티마이저들은 ‘Bad local optima convergence problem’ 발생
  • 학습 초기에 샘플이 매우 부족하여 adaptive learning rate의 분산이 매우 커지고 이에 따라 최적이 아닌 local optima에 너무 일찍 도달하여 학습이 거의 일어나지 않는 현상
  • 기존엔 Warmup heuristic 방법으로 직접 학습률을 바꿔가며 극복해왔음 (하이퍼 파라미터가 추가된다는 단점)
  • 이걸 자동으로 해주는것이 RAdam
  • 수식을 포함해 좀더 자세히 보고싶으면 원문으로

matplotlib plot 'K.'

plt.plot(x_numpy,y_adam_numpy,'k.',ms=2,label='ADAM')
  • 그래프 색을 바꿔보자는데 위 코드에서 'k.'의 '.'이 무엇인고
  • k는 색상 '.'은 linestyle을 의미
  • 선형 그래프를 점으로 찍어주겠다는것
  • Hex 코드로 바꾸면 먹통됨 ex) '#FFFFFF.'
  • 아래와 같이 바꿔서 해결
plt.plot(x_numpy,y_adam_numpy, color='#666666', marker='.', linestyle='none',ms=2,label='ADAM')

pytorch permute

  • 축 변경
  • transpose 확장판
  • transpose(a, b) a, b는 축의 인덱스로 두개의 축을 맞 바꿔줌
  • transpose는 단 두개의 축만 바꿔줄 수 있음
  • permute(a, b, c, d, e ...) 각 인자는 축의 인덱스로 해당 축을 현재 입력순서대로 바꿔줌
x = torch.rand(16, 32, 3) # 0: 16, 1: 32, 2: 3
y = x.tranpose(0, 2)  # [3, 32, 16]
z = x.permute(2, 1, 0)  # [3, 32, 16]

cnn에서 사용되는 maxpool

  • 커널 사이즈와 stride를 지정해서 이미지를 압축하는것
  • 파라미터가 너무 많아지는 것을 방지하기 위해 사용
  • 규칙에 따라 max pool, mean pool 등이 있으며 각각 필터안에서 가장 큰 값만 사용, 평균값을 사용하는 방식임

좋은 웹페이지 즐겨찾기