반응형
반응형

#모두를 위한 립러닝 강좌 7-2 : Meet MNIST Dataset

https://www.youtube.com/watch?v=ktd5yrki_KA&index=21&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm


...

반응형
반응형

#모두를 위한 립러닝 강좌 7-1 : Training/test dataset, learning rate, normalization

https://www.youtube.com/watch?v=oSJfejG2C3w&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=20



ㅇㅇㅇㅇ

반응형
반응형

7. [Mac] 에서 텐서플로우(Tensorflow) GPU 설치하기


원문 : https://www.tensorflow.org/install/install_mac


  • TensorFlow with GPU support. TensorFlow programs typically run significantly faster on a GPU than on a CPU. Therefore, if your system has a NVIDIA CUDA GPU meeting the prerequisites shown below and you need to run performance-critical applications, you should ultimately install this version.

Requirements to run TensorFlow with GPU support

If you are installing TensorFlow with GPU support using one of the mechanisms described in this guide, then the following NVIDIA software must be installed on your system:

  • CUDA Toolkit 8.0. For details, see NVIDIA's documentation. Ensure that you append the relevant CUDA pathnames to the LD_LIBRARY_PATH environment variable as described in the NVIDIA documentation.
  • The NVIDIA drivers associated with CUDA Toolkit 8.0.
  • cuDNN v5.1. For details, see NVIDIA's documentation. Ensure that you create the CUDA_HOMEenvironment variable as described in the NVIDIA documentation.
  • GPU card with CUDA Compute Capability 3.0 or higher. See NVIDIA documentation for a list of supported GPU cards.

If you have an earlier version of the preceding packages, please upgrade to the specified versions. If upgrading is not possible, you may still run TensorFlow with GPU support, but only if you do both of the following:

  • Install TensorFlow from sources (as described in Installing TensorFlow from Sources.
  • Install or upgrade to at least the following NVIDIA versions:
    • CUDA toolkit 7.0 or greater
    • cuDNN v3 or greater
    • GPU card with CUDA Compute Capability 3.0 or higher.



1) 본인 PC에 NVIDIA GPU가 있는지 확인하기



사과 > 이 MAC에 관하여.. > 개요 > 그래픽 

본인 맥북은 2015년형 맥북 레티나 (macbook pro retina 15 inch) - Intel Iris 그래픽 카드를 쓰고있다...윽!


[window에서 확인하는 방법]

윈도우키+R > dxdiag > 디스플레이> AMD Radeon (TM) R5 340X 


2) CUDA 설치

NVIDIA CUDA란? (https://namu.wiki/w/CUDA)

NVIDIA GPU에서만 사용할 수 있습니다.. 


3) Tensorflow GPU 설치

방법1) cmd로 설치

pip install --upgrade tensorflow-gpu # for Python 2.7 and GPU

pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU


방법2) Pycharm 으로 설치


File > Default Settings .. 



Project Interpreter > 하단 Install 클릭 > Tensorflow-gpu 검색



설치 중 ... 



tensorflow-gpu 버전이 설치된 것을 확인 가능하다.


4) GPU 예제 실행해보기

테스트 진행




궁금한 점

NVIDIA GPU가 아닌 라데온이나 다른 그래픽 카드에서는 CUDA를 실행할 순 없을까?.. 없당.

*http://s3delta.tistory.com/401 > 썰일뿐이군.. 

*https://www.quora.com/Can-CUDA-work-with-AMD-Radeon-HD-8330-with-12Gb-RAM > 단호하네....


결론은 안되니까.. Open CL과 Open GL은 뭐지 알아봐야겠다.



참고 링크


반응형
반응형

#모두를 위한 립러닝 강좌 7-2 : Training/Testing 데이타 셋

https://www.youtube.com/watch?v=KVv1nMSlPzY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=19


*어떠한 모델이 좋은 모델인가?


전체 데이터 중에 70%는 Training Set으로 나머지 30%는 Testing set로 남겨두고 30%는 절대 사용해선 안된다. 그리고 30%의 Training set를 다시 70%는 트레이닝 데이터로 나머지 30%는 Validation 체크를 하기 위한 값으로 남겨둔다. 여기서 Validation 체크란 rate나 람다같은 수를 수정 변경할 경우 쓸 validation 체크용 데이터이다.


*Online learning이란?

100만개의 데이터 세트가 있을 경우, 100만개의 데이터 세트를 10만개씩 나누어서 Model을 학습시키는데 이때, 첫번째 학습한 10만개에 대한 학습 결과가 두번째 학습시키는 10만개의 데이터에 반영 되어야 한다는 방법론이다. 


*MINIST Dataset

사람들이 적어 놓은 숫자들을 컴퓨터가 정확히 알아낼 수 있는지 학습시키는 데이터 세트이다. 미국에서 사람들이 우편번호를 쓸 때, 날려쓰는 경우가 있는데 그 일을 컴퓨터를 통해서 시키기 위해서 나온 방법이다. 이것 역시도, train-inmages-idx3, train-labels 트레이닝 세트와 t10k-images, t10k-labels 테스트 세트가 있을 때 우리는 우리가 가진 모델이 얼마나 정확한 모델을 가졌는지 확인하는 작업은 매우 간단한 일이 될 것이다. y값 (레이블값)과 모델이 예측한 값을 비교하여서 100개 중에 10개 맞으면 10% 정확한 것이고. 100개 중에 90개를 맞췄다면 90%의 정확도를 가졌다고 할 수 있다.


반응형
반응형

#모두를 위한 립러닝 강좌 lec 7-1 : 학습 Learning rate, Overfitting 방지법, 그리고 일반화

https://www.youtube.com/watch?v=1jPjVoDV_uo&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=18



*Gradient descent


cost function을 정의하고 cost 값을 최소화 하기 위해서 사용했던 경사를 타고 내려가는 알고리즘을 구할때

∂값을 임의로 정하였었다. (ex. learning_rate= 0.001)


Learning rate를 잘 정하는게 중요하다. 왜 중요하냐!


1) 이 step을 매우 크게 했을 경우

경사를 내려가는 Step이 매우 크게 된다면, 기울기의 최소값이 아니라 바로 다시 올라갈 수 있다.. (빨강색과 파랑색)

이 rate가 더 크게 된다면, 결국 파랑색 선을 따라서 그래프를 벗어날 수도 있다.

이것을 우리는 overshooting이라고 한다. 

= 값을 구했는데, 굉장히 큰 값을 찍다가 알 수 없는 값이 나올 경우 발견되며 이때 overshooting을 의심 해야한다.


2) 반대로 step을 매우 작게했을 경우

굉장한 시간이 소요되며, 시간 제한이 있을 경우 경사면이 다 돌기도 전에 멈출 것이다.

그래서 미리 cost 함수를 실행하면서 rate의 비율을 찍어보고 테스트 후에 돌리는 것이 좋다! (보통은 0.01을 넣고 돌려보세요)



*Data(X) preprocessing for gradient descent 


어떠한 한 점에서 시작하면, 최고로 낮은 지점에 도착하는 것이 목표이나,

x1값과 x2의 값이 있을 때 값이 크게 차이가 나게 된다면, 그래프는 눌린 타원형으로 그려질 것이다. 


그러므로 데이터의 분포도를 보고, normalization하는 것이 중요하다.

(1) Original Data

(2) zero-centered data

(3) normalized data 


*Standardization 


평균을 분산값으로 나누면 끝이다. = nomalization 종류는 다양하다.



*Overfitting


머신러닝이 학습을 통해서 모델을 만들어 가는데, 그러다 보니까 학습 데이터에 너무 딱 맞는 모델을 만들 수 있다. 

그렇게 되면, 학습데이터를 다시 가지고 물어보면 되지만 실제 테스트 데이터 등을 통해서 돌려보면 제대로 안되더라.


ex) - 와, + 가 석인 경우라면은?

-와 +를 사이로 linear 라인을 그어서 좋은 모델로 만들 수 있지만, 너무 정확하게 만들려고할 경우 모델이 비선형이 될 수 있다.


그래서 일반적이며 좋은 모델은 model1이다. 

그러나 model2는 가지공 있는 데이터에만 정확히 맞아서 정확도가 떨어질 수있다. 이러한 데이터를 overfitting이라고 한다.


*Overfitting을 줄이는 방법

1) 트레이닝 데이터가 많으면 좋다.

2) features 개수를 줄인다. 

3) 정규화(일반화-regularzation)시킨다. 


여기서 그럼 일반화/정규화라는 것은? 

비선형적인 구조들을 선형구조로 만들어내는 것을 말한다. 


빨강색 네모부분이 바로 regularzation strength 라고 한다. 

텐서플로우에서는 l2reg = 0.001 * tf.reduce_sum (tf.square(W)) 로 표현한다. 


반응형
반응형


반응형
반응형

김성 교수님의 딥러닝 git 다운받기


반응형
반응형

파이참(Pycharm)에서 텐서플로우 예제 실행해보기



File > Settings .. 



Project 선택 > Project Intepreter > TensorFlow가 있는지 확인!

없으면, + Install > 



TensorFlow 검색 > Install Package


간단한 예제와 결과

import tensorflow as tf

# https://www.tensorflow.org/get_started/get_started
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0) # also tf.float32 implicitly print('result:', node1, node2)

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/aileen/PycharmProjects/test_project/TensorFlow/__init__.py result: Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32) Process finished with exit code 0


관련문서


반응형

+ Recent posts