save the world

7주차 본문

Deep Learning Diary

7주차

함안조씨 2018. 3. 2. 14:33

<2018.03.01. 목>

Training & Code check
학습을 몇번 해봤으나 모든 시도에 대해 한, 두번만의 iteration에서 값이 몇개의 값으로 수렴하였다. 픽셀값(label)이 어떤 값이던 간에 모델의 output을 통해 나온 값은 한정된 수의 숫자였다. 이 정도로 학습이 되지 않으니 코드상에 문제가 있는 것 같아 코드를 확인 할 필요가 있다고 생각하여 Input값으로 Latent 이미지를 넣고 Label 값으로 Latent 이미지의 center pixel 값을 넣어주었다. 이렇게 학습을 시킨다면 W와 B 값이 identity 커널로 학습이 되기만 한다면 100%의 정확도를 보이도록 학습이 되어야 한다고 생각하였다.
아래는 트레이닝 과정에서 출력한 값이다.


iter:  89610, 
stepSize=1e-8, momentum=0.8

cost_val: 

 [104 189 187 104  31  31 104  31 187 187 104 104 104  31 187 187 104 104

 104 104 187 104 104 104 104 187  91 104 104 104  31 104 187  31 104 104

 187 104 104 104 104 104 187 104 187 187 104 187 104 187 187  31 104 104

 104 187 104 104 187 187 104 104 104 232] 

label_val: 

 [203   3 198 130 173 123  77 153  53 163 127 146 228  32 114 149 131 110

 154  91 138 140  61 103 110 126  27 226  82 173  70 254 122 228 137 159

  49  77  54 178 245 102  83 217 125 185 128  81  67 109 154 163 167  24

 192  30 149 215 193  66 193 150  79 173]


cost_val 은 예측한 pixel 값이고 label_val은 원래의 픽셀값이다. cost_val을 보면 104, 187, 31이 많다. 거의 9만번의 iteration으로도 학습이 되지 않은 모습을 보인다.
stepSize(learning rate)를 1이상으로 했을 경우 cost_val은 위 처럼 3개의 수가아닌 하나의 값으로 모여버렸으나 1e-8 정도의 작은수를 stepSize로 사용했을 경우 3가지 정도의 수가 나왔다.


<2018.03.04. 일>

더 간단한 시스템
학습이 완벽하게 되는것을 보지 못했기 때문에 점점 더 학습방법을 단순화 시키면 시킬수록 원시인이 되는 기분이다. 1+1=2 라는 것을 알려주고 1+1의 답을 말해보라고 하는데 그것 마저도 못하는 컴퓨터를 보니 답답하다.
이번엔 더 간단한 시스템으로 구축했다. 파이썬 파일 이름도 codecheck_onehot_oneimg.py 이다. 코드가 제대로 동작하는지 확인해보기위해 codecheck이라고 적고 onehot 시스템으로 동작되도록 하였다. 즉, 이미지패치를 넣으면 가운데 픽셀값이 뭔지 알아내도록 만들었다. 이것을 단 하나의 이미지에서 그 이미지의 가운데 패치 17x17짜리를 input data로 넣고 output으로 가운데 픽셀값이 0일 때, 1일 때, ... 255일 때의 값을 확률로 나타내고 그 중 가장 큰 확률을 가지는 값을 픽셀값으로 나타내도록 만들었다.(간단히 말해서 softmax)
Hyper parameter
1. step size = 1e-8
2. batchsize = 18
3. momentumOptimizer(stepsize, momentum=1, use_nesterov=True)
1000번째 까지 label값인 104를 맞추지 못했으나 이후부터 104를 맞추기 시작했다. 그러나 지금 글을 쓰는 현재 25,880 iter 까지 첫번째 커널(w1)의 값이 계속 변하고 있으므로 언제 발산할지 모르기 때문에 5만번째 iter까지 지켜볼 예정이다. 5만번까지 지켜본 결과 커널값은 변하고있으나 레이블 값이 바뀌지 않아 종료하였다.
이후 실험을 두번정도 더 수행한뒤 5만회까지 발산하지 않으면 다른 이미지를 섞어 학습시켜보기로 했다.

02. 
step size=1e-8, momentum=1, batchsize=64, 1,000 iter까지 수렴하지않음

03. step size=1e-8, momentum=1, batchsize=10, 1,000 iter부터 수렴

04. step size=1e-8, momentum=1, batchsize= 2, 20,000 iter부터 수렴, 50,000 iter까지 계속수렴

05. step size=1e-8, momentum=1, batchsize=10, 4,290 iter부터 수렴, 11,000 iter까지 계속수렴

06. step size=1e-5, momentum=1, batchsize=10, 50 iter부터 수렴, 11,000 iter까지 계속수렴
07. step size=1e-4, momentum=1, batchsize=10, 90 iter부터 수렴, 13,000 iter까지 계속수렴
08. step size=1e-3, momentum=1, batchsize=10, 140 iter부터 수렴, 5,000 iter까지 계속수렴
09. step size=1e-2, momentum=1, batchsize=10, 10 iter부터 수렴, 5,300 iter까지 계속수렴
10. step size=1e-2, momentum=0.8, batchsize=10, 70 iter부터 수렴, 5,300 iter까지 계속수렴

'Deep Learning Diary' 카테고리의 다른 글

9주차  (0) 2018.03.12
8주차  (0) 2018.03.10
6주차  (0) 2018.02.19
4주차  (0) 2018.02.06
3주차  (0) 2018.01.31