글

라벨이 TensorFlow인 게시물 표시

경사소실 문제 해결

이미지
1. 경사 소실 문제 출력층으로부터 되돌아가면 각 층의 가중치를 수정하려면 미분 값, 즉 기울기가 필요하다. 그런데 층이 늘어나면서 기울기가 중간에 0이 되어버리는 경사 소실(vanishing gradient) 문제가 발생한다. 이는 시그모이드 함수의 미분 최대치는 0.3, 즉 1보다 작은 값이기 때문이다. 은닉층이 많아질수록 기울기는 점점 0에 가까워지게 된다. 이를 해결하기 위해서 시그모이드 함수를 대체할 수 있는 활성화 함수를 사용하려면 시그모이드 함수와 모양이 비슷하고 경사가 소실되지 않는 함수를 사용한다.  1.1 쌍곡탄젠트 함수(Hyperbolic Tangent Function) tanh(x) tanh(x) 함수 정의와 그래프이다.  * 시그모이드 함수 : 입력값 − ∞ <x< ∞에 대하여 함수값의 범위는 0<σ(x)<1   * 쌍곡탄젠트 함수 : 입력값 − ∞ <x< ∞에 대하여 함수값의 범위는 − 1<tanh(x)<1     다음은 쌍곡탄젠트 함수의 경사를 구하기 위해 필요한 tanh(x) 의 도함수를 구하는 과정이다. 아래는 tanh′(x) 와 σ′(x) 의 그래프를 비교한 그림이다.  σ′(x) 의 최대값은 σ′(0)=0.3 이고 tanh′(x) 의 최대값은 tanh′(0)=1 이기 때문에 시그모이드 함수와 비교했을 때 경사가 소실되기 힘들다는 것을 알 수 있다 . * TensorFlow에서 구현은 tf.nn.tanh() 이다.  1.2 ReLU(Rectified Linear Unit) 함수 tanh(x) 함수를 사용하면 미분값의 범위가 확장된다. 그러나 고차원 데이터를 다룰 경우에는 값이 커질 수 있어 다시 경사가 소실될 수 있다. 복잡...

Tensorflow GPU 설치

이미지
반드시 tensorflow 공식 문서를 확인해야한다 !!! 추천 CUDA 버전 , cudnn 버전 , anaconda 일때 파이썬 버전 , native pip 일때 파이썬 버전을 확인한 후 설치하자 . 자신의 환경에 맞춰서 공식 문서를 보고 파이썬 버전을 잘 선택해야 한다 . 또한 , 선택하는 운영 체제에 따라서도 버전이 다르다 . 아래 링크에서 확인하자 . https://www.tensorflow.org/install/gpu 2018년 기준 조건은 아래와 같다.  가장 먼저 GPU 설치가 가능한 지 먼저 확인 해야 한다 . 위 링크에 보면 CUPA Compute Capability 3.5 이상 이 필요하다고 되어 있다 . 현재 회사 노트북 그래픽 카드 (GeForce 820M) 의 Compute Capability 는 2.1 이니까 GPU 버전 설치가 불가능한데 멀쩡히 설치했던 CPU 버전을 지우고 시간을 낭비했다 . 1. CUDA Toolkit 설치 현재 추천 버전은 9.0 이상이다. 설치파일을 한번에 받기 위해 local을 선택하는 것이 좋다. CUDA 추천 버전 설치가 완료 되고 재부팅한다음에 환경변수 가 제대로 설치 되었나 확인해야한다 . 시스템 환경변수 편집 -> 고급 -> 환경변수 클릭 위와 같이   CUDA_PATH  가 추가되어있으면  OK 이다 ! 만약에  CUDA 버전을 여러개 설치한다면  CUDA_PATH_V9_0 과 같이 구분되며 최근 설치한 버전이  CUDA_PATH 로 들어간다고 한다 . 2. cuDNN 설치 현재 추천 버전은 7.2 이상이다.  cuDNN 을 받으려면 DEVELOPER 홈페이지에 가입이 필요하다 . 먼저 가입을 하고 다운로드 받는다 . 위에 설치된 CUDA 버전을 참고해서 cuDNN 버전을 선택하고 해당하는 O...