일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- VGGNet
- restnet
- 포트번호 변경
- Rust설치
- stepsize
- #cudnn
- ubuntu 원격
- weight histogram
- log파일
- 치환 기능
- Xpad설치
- 리눅스 비밀번호
- canon mf416dw
- DenseNet
- #python gpu
- #ubuntu 14.04(LTS)
- tensorboard
- Ubuntu동글
- Git branch 보이기
- twolay
- Lagrange Multiplier
- 화면확대고정
- #enviroment variable
- 학습성공
- Hidden layer output
- 듀얼부트
- 전체내용
- 3D convolution
- Ubuntu 설치
- #cuda
- Today
- Total
save the world
7주차 본문
<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까지 계속수렴