'TensorFlow'에 해당되는 글 2건

  1. 2018.09.19 He 초기화 구현 in tensorflow
  2. 2018.09.13 tensorboard 간단 요약

신경망을 처음 공부할 때 망 구현을 위해 tensorflow.org에 있는 document를 하나하나 읽었다.

문서만 보니 뭔소린지 개념적으로는 이해를 하겠는데, 막상 코딩하기 어렵더라.

그래서 요즘은 홍콩과기대 김성훈님 동영상의 실습과제를 따라하면서 tensorflow를 공부한다.

동영상에 나오는 실습내용을 따라하니 이제좀 tensorflow가 어떻게 동작하는지 알겠다.

혹시 나같이 tensorflow.org를 정독하겠다는 각오로 공부하는 분들이 있다면, 

김성훈님 강의에 딸린 실습과제를 먼저 돌려보길 추천한다. 감을 잡을 수 있다.


사설이 길었다. 이번 글에 적으려고 했던건 He Initialization을 Tensorflow에 구현하는 방법이다.

김성훈님 강의를 보다보니 Xavier Initialization은 구현방법을 보여주는데 He Initialization은 안나오더라.

그래서 어떻게 이걸 해야하나 한동안 구글링 했다. 결국 방법을 못찾았다.


그래서 아래와 같은 방식으로 추리해서 He Initialization을 구현했다.

사실 내가 해결한게 맞는지 이 포스트를 본 사람들에게 검증받고 싶기도 하다.


내 추리는 이렇다. 


mean, variance, std의 정의로부터 시작한다.

그리고 변수X를 a로 나눴을 때, mean, var, std가 어떻게 바뀌는지 봤다.

그런데 He Initialization은 N(0,1)을 1/sqrt(이전레이어의 output갯수/2) scaling해서 초기화에 사용한다.

즉, std가 1/sqrt(이전레이어의 output갯수/2) 이고 mean이 0인 normal distribution이라고 생각할 수 있다.

그러므로 아래와 같이 단순하게 tf.random_normal의 stddev argument에 1/np.sqrt(784/2)를 넣었다.

(MNIST 데이터셋을 사용해서 이전레이어의 output갯수가 784다)

784/2 이 부분을 784로 바꾸면 Xavier Initialization이 된다.

실제로 이렇게 Initialization해서 동일 조건에서 accuracy가 증가하는 것을 확인했다.

'이론 > 신경망' 카테고리의 다른 글

배치 정규화 논문 리뷰 (Batch normalization)  (1) 2018.11.07
tensorboard 간단 요약  (0) 2018.09.13
인공신경망과 학습  (0) 2018.03.05
전미분, 편미분, Gradient에 대해  (2) 2018.02.28
공부할 때 참고한 자료들  (0) 2018.02.27
Posted by 굿쟌
,

회사에서 현업을 하다보니 신경망을 집중해서 오래 공부하기가 어렵다. 

점점 공부하는 주기가 길어진다. 그리고 길어진 주기만큼 이전에 공부했던 내용을 까먹는다.

어떤 내용인지 의미는 기억나는데 디테일하게 수학적으로 어떻게 유도하고 이해 했는지 가물가물하다.

이런 상황에서 차례대로 글을 쓰려니 다시 예전에 공부한걸 복습해야되서 몹시 귀찮다. 

안그래도 모르는데 귀찮기까지 해서 아무것도 안쓰느니 그때그때 아는만큼, 배운만큼 쓰는게 좋은것 같다.

그래서 홍콩과기대 김성훈교수님 동영상을 보며 배운 tensor board 사용법을 정리해 본다.


위에서부터 차례대로 내려오면된다.

먼저 내가 학습과정에서 얻고 싶은 정보를 scalar나 histogram으로 만든다.

scalar는 일변수, histogram은 다변수로 생각하면 된다.

그리고 이걸 모아 tf.summary_merge_all 함수는 summary 틀을 반환한다. 붕어빵 틀이라고 생각해도 좋다.

이제 이 틀을 sess.run을 호출할 때 인자로 넘긴다. 

그럼 sess.run이 틀에다가 재료를 채워서 매 호출때마다 summary instance를 준다. 

붕어빵이라고 쳐도 좋다.

그럼 tf.summary.filewriter가 만든 summary writer가 이 붕어빵을 주어다가 파일 봉투에 파일로 담는다.

sess.graph에 담겨 있던 그래프 정보도 애가 가져다가 파일봉투에 파일로 담는다.

filewriter가 다 담아 놓으면 이제 tensor board가 일할 차례다

tensor board는 fileWriter가 담아놓은 봉투에서 정보들을 꺼내 학습과정을 보여주는 그림을 그린다.

멋진 화가다. 이 화가에게 일을 시키려면 cmd창에서 tensorboard --logdir dirpath 이렇게 말하면 된다.

다 그리면 위와 같이 그림을 어디다 그렸는지 알려준다.

그럼 이제 우린 여기로 가서 tensor board가 얼마나 멋진 그림을 그렸는지 감상만 하면 된다.

Posted by 굿쟌
,