save the world

8주차 본문

Deep Learning Diary

8주차

함안조씨 2018. 3. 10. 02:11

<2018.03.05. 월>

회의내용
- 이미지의 패치 하나만 넣고 학습을 할 경우 마지막 w는 모두 0이고 b에서 하나의 값만 1이면 원하는 값이 나온다면 위의 결과처럼 수렴이 가능하므로 w 와 b 를 확인해보았으나 마지막 w와 b는 예상과 다르게 값이 있었다.
- 교수님께서 Batch Normalization을 빼라고 하셔서 제거하였다.
- skip-connection도 시도해 보자고 하셨다.


<2018.03.07. 수>

학습 성공 - onelayer.py
학습이 되지않았던 가장 큰 이유, 실수는

위의 73번째 줄 tf.nn.softmax_cross_entropy_with_logits 함수의 logits 부분에 softmax한 값(prob)을 넣어 줬었다는 것이다. tf.nn.softmax_cross_entropy_with_logits 함수는 softmax 를 포함하고 있기 때문에 "prob"가 아닌 마지막 모델의 output인 "l1"을 넣어줘야 한다. 또한 75번째줄도 prob가 아닌 l1을 넣어주어야 한다.


그리고 이전 학습과 다른점은 하나의 레이어 라는 점 외에도 70번째 줄에 "Activation func."를 제외한 tf.matmul만 사용했다는 점이다. 현재2018.03.07.22:00 활성함수를 사용하지 않고 학습을 하였을 때 학습이 되었다. 100%의 성능은 아니지만 대부분 18개중 15개 이상의 픽셀값은 맞추었다. 또한 학습시 약 3000개의 이미지에서 가운데 17 x 17 크기의 이미지만 사용했다. 즉, 이미지 개수는 3,000개였다. 다음 학습시 3,000개의 이미지에서 randomcrop을 하였을 경우 어떻게 결과가 나오는지는 지켜봐야 하지만 고정된 3천개의 이미지를 이용하였을 때는 학습이 되었다는 점이 큰 발전이다.


<2018.03.08. 목>

ReLu 추가후 실험
70번째 줄에 ReLu없이 tf.matmul만을 이용하여 학습을 진행하였는데 이번에는 ReLu를 추가하여 실험해 보았으나 초반 몇번의 시작부터 값이 0으로 수렴하기 시작하였다. ReLu뿐만 아니라 ReLu6도 사용해 보았으나 이는 0으로 수렴하지 않고 불특정한 하나의 값으로 수렴하여 학습이 되지 않았다.
tf.matmul을 사용한 FC layer는 (
http://bcho.tistory.com/1154)를 참고하여 만들었다.


leaky_relu
ReLu의 특성상 0 이하의 input이 들어오면 모두 0의 값을 배출하므로 Gradient가 없어 학습이 되지 않는데 비해 leaky relu는 0이하의 input일때 아주 작은 gradient가 존재하므로 학습이 된다. 이를 이용하여 학습을 시켰더니 ReLu로는 안되던 학습이 잘 되었다.


<2018.03.09. 금>

one conv layer + FC layer + without activate func. + seperated trX and teX (twolay_board_trX_teX.py)
제목에서 처럼 알 수 있듯이 이전에는 하나의 FC layer를 쓰지 않고, FC layer 전에 convolution layer를 하나 추가하였으며 활성함수가 없는 것이 학습이 더 잘되어서 활성함수를 넣지 않았다. 마지막으로 이 실험이 이전과 다른 점은 training data와 test data를 구분하여 넣은 점이다. 이 때까지는 training data로 test도 하였기때문에 진짜 "test"의 의미가 아니었으나 지금은 두 데이터를 나누어 입력하였으므로 제대로 된 test의 의미가 부여되었다. 



주황색은 FC layer 하나만 사용파란색은 Conv. + leaky_relu + FC layer 사용
빨간색은 Conv. + FC layer + trX, teX사용


이번 실험에서 되지 않았던 것은 random.crop를 하였을 때 학습이 되지 않는 다는 점이다. 이전부터 계속 random.crop을 사용하여 학습을 시켜왔었는데 한 번도 학습에 성공한 적이 없다. random.crop을 사용하지 않고 같은 데이터를 여러번 사용하여 학습해야 한지는 앞으로 더 실험을 해 봐야 확실해 질 것 같다.


<2018.03.11. 일>

Blurred image
Blurred_data의 값은 0~1tk사이로 하는것이 좋다. 정확히는 평균0 표준편차1인게 좋으나  0~1사이도 충분한듯하다고 하심 이때 인풋값의 범위가 바뀌어서 learning rate도 바뀌어야함 1e-3 정도로 하니 학습이 된다.

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

11주차  (0) 2018.03.26
9주차  (0) 2018.03.12
7주차  (0) 2018.03.02
6주차  (0) 2018.02.19
4주차  (0) 2018.02.06