달력

6

« 2020/6 »

  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
  •  

[정리] 모두를 위한 딥러닝 10 - ReLU & 초기값 정하기   by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


시그모이드 결과값은 0<f(x)<1 이기 때문에 이를 체인룰에 따라 계속 곱하다보면 (레이어가 많으면) 

0.01 * 0.03 * 0.2 와 같은 형태가 되기 때문에 결국 한없이 0 에 가까워지게 됩니다. 

즉, 입력값 X 가 결과값 f(x), Y 에 미치는 영향이 거의 없게 됩니다.  

따라서, 학습을 깊게 여러번 하면 할수록 에러가 커지는 현상이 일어납니다. 이건 오버피팅 Over Fitting 과 다릅니다.


이를 극복하기 위한 함수가 렐루 ReLU 입니다. (위 그림에서 검정색이 시그모이드 sigmoid, 자주색이 렐루 ReLU 함수)

렐루는 0 이하는 0 으로, 그 이상값은 자기 자신의 값을 갖는 함수입니다.


이 두가지 함수를 비교하기 위해 텐서보드 tensorboard 를 이용해보겠습니다.

텐서보드로 분석할 수 있도록 로그를 남긴 다음, 텐서보드를 띄워서 웹브라우저로 확인하면 됩니다.

생각보다 메모리나 CPU 를 많이 사용하는, 좀 무거운 라이브러리입니다.

(텐서보드 이미지 추가)


정확도 비교.

1번 방법 = 시그모이드를 사용하여 레이어 3개 ~ 10개 사용하기.

# weights & bias for nn layers
with tf.name_scope("L1") as scope:
W1 = tf.Variable(tf.random_normal([784, 256]))
b1 = tf.Variable(tf.random_normal([256]))
L1 = tf.sigmoid(tf.matmul(X, W1) + b1)
w1_hist = tf.summary.histogram("weights1", W1)
b1_hist = tf.summary.histogram("biases1", b1)
layer1_hist = tf.summary.histogram("L1", L1)

with tf.name_scope("L2") as scope:
W2 = tf.Variable(tf.random_normal([256, 256]))
b2 = tf.Variable(tf.random_normal([256]))
L2 = tf.sigmoid(tf.matmul(L1, W2) + b2)
w2_hist = tf.summary.histogram("weights2", W2)
b2_hist = tf.summary.histogram("biases2", b2)
layer2_hist = tf.summary.histogram("L2", L2)

이런 형태로 레이어를 3개, 10개 만듭니다.


2번 방법 = 렐루 relu 를 사용하여 레이어 3개 ~ 10개 사용하기.

# weights & bias for nn layers
with tf.name_scope("L1") as scope:
W1 = tf.Variable(tf.random_normal([784, 256]))
b1 = tf.Variable(tf.random_normal([256]))
L1 = tf.nn.relu(tf.matmul(X, W1) + b1)
w1_hist = tf.summary.histogram("weights1", W1)
b1_hist = tf.summary.histogram("biases1", b1)
layer1_hist = tf.summary.histogram("L1", L1)

with tf.name_scope("L2") as scope:
W2 = tf.Variable(tf.random_normal([256, 256]))
b2 = tf.Variable(tf.random_normal([256]))
L2 = tf.nn.relu(tf.matmul(L1, W2) + b2)
w2_hist = tf.summary.histogram("weights2", W2)
b2_hist = tf.summary.histogram("biases2", b2)
layer2_hist = tf.summary.histogram("L2", L2)

이런 형태로 레이어를 3개, 10개 만듭니다.

두 소스에서 sigmoid / relu 이 부분만 다릅니다.


4개의 소스를 비교해보면 

 

 Sigmoid 3 Layer

 ReLU 3 Layer

 Sigmoid 10 Layer

 ReLU 10 Layer

 정확도

 94.21 %

 95.87 %

 94.31 %

 93.00 %


엠니스트 MNIST 는 위 4가지 중에서 렐루 3 레이어로 만들때 가장 좋은 결과가 나왔습니다.

즉, 너무 많은 레이어는 결과가 더 나빠지기도 합니다.


그리고, 초기값 잘 설정하는게 중요합니다.

(정리중)

RBM : Restricted Boatman (Boltzman) Machine

자비어 : xavier

MSRA



Posted by 멋지다마라송

댓글을 달아 주세요

책 읽어주는 딥러닝 : DEVIEW 2017 by 김태훈



https://www.slideshare.net/carpedm20/deview-2017-80824162

Posted by 멋지다마라송

댓글을 달아 주세요

[맥 MACOS] 딥러닝 개발환경 만들기 - TensorFlow + Jupyter 설치


윈도와 크게 별다른건 없고, 파이썬이 기본으로 설치되어 있는데, 이걸 수동으로 설치한 버전으로 맞추는 작업이 필요하다.


1. VirtualEnv 설치

$ sudo pip install --upgrade virtualenv


2. VirtualEnv 환경설정, 필요 패키지 설치 

우선 파이썬 3 버전으로 설치한다. 

$ virtualenv --system-site-packages -p python3 /Users/marasong/tensorflow


3. 텐서플로우 TensorFlow 설치

pip3 install --upgrade tensorflow


아래와 같이 tensorflow-1.4 버전이 설치되었다.


4. 파이썬 3.5 설치 

- 파이썬은 아직 3.5 로 설치해야 에러가 없는듯 하다. (이건 잘 모름)

https://www.python.org/downloads/release/python-354/

여기에서 가장 아래에 있는 링크를 맥 버전에 맞게 다운받는다.

그리고 설치한다.

이제 맥에서 기본으로 설치된 파이썬 대신 3.5 파이썬으로 연결한다.

$ cd /System/Library/Frameworks/Python.framework/

$ sudo mv Current Current.old

$ sudo ln -s /Library/Frameworks/Python.framework/Versions/3.5 Current


만약 루트 root 인데도 퍼미션 에러가 뜬다면 (Operation not Permitted) 엘 캐피탄이라서 그렇다.

부팅시 command + r 키를 누른다 -> 복구모드로 넘어가면 
유틸리티 -> 터미널.을 실행하고
csrutil disable 엔터. 재부팅. 
그리고 다시 4번 파이썬 3.5 확인.

5. 주피터 노트북 Jupiter Notebook 설치

$ pip3 install jupyter


6. 주피터 실행


$ source /Users/marasong/tensorflow/bin/activate

$ /Users/marasong/tensorflow/bin/jupyter notebook



아래처럼 버전정보가 제대로 나와야 한다.


^_^//


참고 : https://blog.naver.com/julie_eun1014/221180446344



Posted by 멋지다마라송

댓글을 달아 주세요

[정리] 모두를 위한 딥러닝 03 - cost 줄이기 by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


W=2 일때에도 계산해보자.


이걸 2차원 그래프로 나타내면 아래와 같다.

W=1 이 정답이다. (Y = 1 * X)

이를 3차원 그래프로 나타내면 아래와 같다.


W=1 인 값은 미분했을때 (접선의 기울기) 0 이 되는 곳이다.


이걸 파이썬을 이용해서 구현하면 아래와 같다.


초기값을 5 로 주고, 0.1 씩 곡선을 타고 내려가는데 GradientDescentOptimizer 라는 최적화 함수를 이용하면 된다.

오, 6번만에 정답을 찾았다.


다른 예로, 초기값을 -3 으로 주고, 0.1 씩 곡선을 타고 내려간다.

역시 6번만에 정답을 찾았다.


소스코드 : https://github.com/hunkim/DeepLearningZeroToAll

Posted by 멋지다마라송

댓글을 달아 주세요

[윈도] 딥러닝 개발환경 만들기 - TensorFlow 설치


1. 디스플레이 드라이버 설치 

보통 윈도에서 제공하는 드라이버를 사용하기도 하는데, 혹시 모르니 공식 드라이버를 설치한다.


2. Cuda Toolkit 설치

TensorFlow 를 보면 CPU 만 이용하는 방법이 있고, GPU 도 같이 이용하는 방법이 있다.

GPU 도 같이 사용하려면 Cuda 가 필요한데, 그렇다면 Nvidia 그래픽 카드에서만 GPU 사용이 가능한가보다.

현재는 쿠다 8.0 만 지원한다.

https://developer.nvidia.com/cuda-80-ga2-download-archive


3. Python 설치

아직도 2.x 과 3.x 에서 고민중인데, 텐서플로우에서는 3.x 을 사용한다. 

그러면 이제 3.5 냐 3.6 이냐가 고민이다;; (그냥 최신버전 3.6 설치)

https://www.python.org/downloads/

윈도 64비트는 https://www.python.org/downloads/windows/ 여기에서 볼 수 있고, (64비트 중요)

현재 최신 버전은 https://www.python.org/ftp/python/3.6.4/python-3.6.4-amd64.exe <-- 이걸 다운받으면 된다. 



4. TensorFlow 설치

C:\> pip3 install --upgrade tensorflow-gpu <-- GPU 를 이용하는 경우 

C:\> pip3 install --upgrade tensorflow <-- GPU 를 이용하지 않는 경우 (GPU 를 이용하는것보다 많이 느리다)


참고 : tensorflow 1.5 가 릴리즈되었습니다.
쿠다 9 을 지원한다고 하는데, 아직 설치해보지는 못했습니다만 뭐 그냥 설치하면 되지 않을까요...
하지만, 텐서플로우 홈페이지보니 https://www.tensorflow.org/versions/  1.4 버전이 안정버전이라고 하네요.

5. 설치 확인

$ python

Enter the following short program inside the python interactive shell: (에러가 없어야 한다)


>>> import tensorflow as tf

>>> hello = tf.constant('Hello, TensorFlow!')

>>> sess = tf.Session()

>>> print(sess.run(hello))

>>> print(tf.__version__)


참고 : https://www.tensorflow.org/install/install_windows


6. IDE 

파이참 : https://www.jetbrains.com/pycharm/download/#section=windows

주피터 : http://jupyter.org/

참고 : http://dwfox.tistory.com/69


Posted by 멋지다마라송

댓글을 달아 주세요