편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
36번째 줄: | 36번째 줄: | ||
==== 유닉스 계열 ==== | ==== 유닉스 계열 ==== | ||
# '''Install Python. '''Python 2.7이나 3.5(혹은 3.4)를 설치합니다. 추후에 바뀔 수 있으나, 아직 3.6은 추천하지 않습니다. (Ubuntu/Linux 64-bit에서 TF 1.0.0RC0를 설치할 경우에만 3.6이 지원됩니다.) [https://www.python.org/ Python 공식 홈페이지]에 가서 인스톨러 소스를 받거나 command에서 apt-get 등의 명령어로 설치합니다. 우분투(14.04 이상)의 경우 Python은 자동으로 설치되어 있습니다. | # '''Install Python. '''Python 2.7이나 3.5(혹은 3.4)를 설치합니다. 추후에 바뀔 수 있으나, 아직 3.6은 추천하지 않습니다. (Ubuntu/Linux 64-bit에서 TF 1.0.0RC0를 설치할 경우에만 3.6이 지원됩니다.) [https://www.python.org/ Python 공식 홈페이지]에 가서 인스톨러 소스를 받거나 command에서 apt-get 등의 명령어로 설치합니다. 우분투(14.04 이상)의 경우 Python은 자동으로 설치되어 있습니다. | ||
# '''Install Anaconda. '''[https://www.continuum.io/downloads Anaconda 공식 홈페이지]에서 '''Python 버전에 맞는''' Anaconda를 설치합니다. 설치 과정은 '''Download for ***''' 탭에 나와 있습니다 | # '''Install Anaconda. '''[https://www.continuum.io/downloads Anaconda 공식 홈페이지]에서 '''Python 버전에 맞는''' Anaconda를 설치합니다. 설치 과정은 '''Download for ***''' 탭에 나와 있습니다. 우분투의 경우 '''다운로드 폴더로 이동한 후에'''(cd ~/Downloads 또는 cd ~/다운로드)<syntaxhighlight lang="bash">bash Anaconda2-4.2.0-Linux-x86_64.sh # if Python 2.x | ||
bash Anaconda3-4.2.0-Linux-x86_64.sh # if Python 3.x | bash Anaconda3-4.2.0-Linux-x86_64.sh # if Python 3.x</syntaxhighlight> 중 자신의 Python 버전에 맞는 줄을 복사하여 터미널에 넣으세요. | ||
# '''Create conda environment. ''''tensorflow'라는 conda 환경을 만듭니다. 다음 셋 중 자신의 Python 버전에 맞는 것을 넣어주세요.<syntaxhighlight lang="bash">conda create -n tensorflow python=2.7 # Python 2.7 | # '''Create conda environment. ''''tensorflow'라는 conda 환경을 만듭니다. 다음 셋 중 자신의 Python 버전에 맞는 것을 넣어주세요.<syntaxhighlight lang="bash">conda create -n tensorflow python=2.7 # Python 2.7 | ||
conda create -n tensorflow python=3.4 # Python 3.4 | conda create -n tensorflow python=3.4 # Python 3.4 | ||
conda create -n tensorflow python=3.5 # Python 3.5 | conda create -n tensorflow python=3.5 # Python 3.5</syntaxhighlight> 그리고 <syntaxhighlight lang="bash">source activate tensorflow</syntaxhighlight>로 conda environment를 활성화합니다. 그러면 '$'가 있는 줄 앞에 '(tensorflow)'가 생겼을 것입니다. | ||
# '''Ubuntu/Linux 64-bit GPU의 경우''' [https://developer.nvidia.com/cuda-downloads CUDA toolkit 8.0]와 [https://developer.nvidia.com/cudnn CuDNN v5.1]가 필요합니다. CUDA toolkit 8.0은 /usr/local/cuda와 같은 곳에 설치하고, cuDNN을 '''toolkit 설치 위치'''에 갖다 놓은 후 <syntaxhighlight lang="bash">tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz | # '''Ubuntu/Linux 64-bit GPU의 경우''' [https://developer.nvidia.com/cuda-downloads CUDA toolkit 8.0]와 [https://developer.nvidia.com/cudnn CuDNN v5.1]가 필요합니다. CUDA toolkit 8.0은 /usr/local/cuda와 같은 곳에 설치하고, cuDNN을 '''toolkit 설치 위치'''에 갖다 놓은 후 <syntaxhighlight lang="bash">tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz | ||
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include | sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include | ||
105번째 줄: | 103번째 줄: | ||
# Windows 운영체제가 '''64-bit'''인지 확인해 주세요. 컴퓨터 (우클릭) - 속성으로 시스템을 들어가면 볼 수 있습니다. | # Windows 운영체제가 '''64-bit'''인지 확인해 주세요. 컴퓨터 (우클릭) - 속성으로 시스템을 들어가면 볼 수 있습니다. | ||
# Python '''3.5'''를 설치합니다. http://python.org | # Python '''3.5'''를 설치합니다. (추후에 3.6이 될 수도 있음. 현재는 리눅스상의 v1.0.0에서 Python 3.6을 지원하는 상태.) http://python.org | ||
# Anaconda3 4.2.0(또는 최신 버전)을 설치합니다. https://www.continuum.io/downloads#windows 에서 for Python 3.5, 64-bit installer를 받으시면 됩니다. | # Anaconda3 4.2.0(또는 최신 버전)을 설치합니다. https://www.continuum.io/downloads#windows 에서 for Python 3.5, 64-bit installer를 받으시면 됩니다. | ||
# 컴퓨터 (우클릭) - 속성 - 고급 시스템 설정 - (하단) 환경 변수를 눌러 시스템 변수 - Path에 MSVCP140.DLL가 있는지 확인해 주세요. 아니라면 https://www.microsoft.com/en-us/download/details.aspx?id=53587 (혹은 [https://www.microsoft.com/ko-kr/download/details.aspx?id=48145 여기])에서 vc_redist.x64.exe를 설치하시면 됩니다. 그렇지 않으면 텐서플로우가 그 dll을 사용하지 못해 <code>No module named "_pywrap_tensorflow"</code>라는 에러가 발생한다고 합니다. | # 컴퓨터 (우클릭) - 속성 - 고급 시스템 설정 - (하단) 환경 변수를 눌러 시스템 변수 - Path에 MSVCP140.DLL가 있는지 확인해 주세요. 아니라면 https://www.microsoft.com/en-us/download/details.aspx?id=53587 (혹은 [https://www.microsoft.com/ko-kr/download/details.aspx?id=48145 여기])에서 vc_redist.x64.exe를 설치하시면 됩니다. 그렇지 않으면 텐서플로우가 그 dll을 사용하지 못해 <code>No module named "_pywrap_tensorflow"</code>라는 에러가 발생한다고 합니다. | ||
# ('''GPU의 경우''') [https://developer.nvidia.com/cuda-downloads CUDA toolkit 8.0]과 [https://developer.nvidia.com/cudnn cuDNN 5.1]를 설치하셔야 합니다. | # ('''GPU의 경우''') [https://developer.nvidia.com/cuda-downloads CUDA toolkit 8.0]과 [https://developer.nvidia.com/cudnn cuDNN 5.1]를 설치하셔야 합니다. | ||
# 이제 | # 이제 명령 프롬프트를 열어, 아래의 원하는 버전을 택하여 붙여 넣으시면 됩니다.<syntaxhighlight lang="bash">pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.1-cp35-cp35m-win_amd64.whl # TF 0.12.1 CPU | ||
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.1-cp35-cp35m-win_amd64.whl | pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl # TF 0.12.1 GPU | ||
TF 0.12.1 | pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0rc0-cp35-cp35m-win_amd64.whl | ||
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl | # TF 1.0.0RC0 CPU | ||
TF | pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0rc0-cp35-cp35m-win_amd64.whl | ||
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0. | # TF 1.0.0RC0 GPU</syntaxhighlight> | ||
TF 1.0. | |||
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0. | |||
====테스트==== | ====테스트==== | ||
<code>python</code> 명령어를 쳐서 Python을 | <code>python</code> 명령어를 쳐서 Python을 엽니다. 나오는 창에 Python 옆에 'Anaconda'가 써 있는 것을 확인해 주세요. '>>>' 표시가 나오면, 한 줄씩 다음 코드를 칩니다.<syntaxhighlight lang="python">import tensorflow as tf | ||
hello = tf.constant('Hello, TensorFlow!') | hello = tf.constant('Hello, TensorFlow!') | ||
sess = tf.Session() | sess = tf.Session() | ||
print(sess.run(hello))</syntaxhighlight> 이때 '''Hello, TensorFlow!'''라는 메시지가 나오면 정상적으로 설치된 겁니다! 축하합니다! | print(sess.run(hello))</syntaxhighlight> 이때 '''Hello, TensorFlow!'''라는 메시지가 나오면 정상적으로 설치된 겁니다! 축하합니다! | ||
IDLE에서 Anaconda를 사용하려면 [http://stackoverflow.com/questions/26047185/import-anaconda-packages-to-idle 여기]를 참고해 주세요. | |||
==== 에러 ==== | ==== 에러 ==== | ||
현재 윈도상의 TF 1.0.0 | 현재 윈도상의 TF 1.0.0 RC0에서 다음과 같은 에러가 나타날 수 있습니다.<syntaxhighlight>E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "BestSplits" device_type: "CPU"') for unknown op: BestSplits | ||
E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "CountExtremelyRandomStats" device_type: "CPU"') for unknown op: CountExtrem | E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "CountExtremelyRandomStats" device_type: "CPU"') for unknown op: CountExtrem | ||
elyRandomStats | elyRandomStats | ||
138번째 줄: | 134번째 줄: | ||
E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "TreePredictions" device_type: "CPU"') for unknown op: TreePredictions | E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "TreePredictions" device_type: "CPU"') for unknown op: TreePredictions | ||
E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "UpdateFertileSlots" device_type: "CPU"') for unknown op: UpdateFertileSlots | E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "UpdateFertileSlots" device_type: "CPU"') for unknown op: UpdateFertileSlots | ||
E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "ReinterpretStringToFloat" device_type: "CPU"') for unknown op: | E c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "ReinterpretStringToFloat" device_type: "CPU"') for unknown op: ReinterpretS | ||
tringToFloat</syntaxhighlight> [https://github.com/tensorflow/tensorflow/issues/6791 여기]를 참고해 주세요. | |||
=== 참고 자료 === | === 참고 자료 === | ||
153번째 줄: | 149번째 줄: | ||
머신 러닝은 꾸준한 학습(경험)을 통해 점점 성능을 나아지게 하는 프로그램입니다. 머신 러닝은 크게 세 가지로 나눌 수 있는데, 다음과 같습니다. | 머신 러닝은 꾸준한 학습(경험)을 통해 점점 성능을 나아지게 하는 프로그램입니다. 머신 러닝은 크게 세 가지로 나눌 수 있는데, 다음과 같습니다. | ||
===Supervised Learning=== | ===Supervised Learning=== | ||
사람이 어떤 함수의 데이터와 | 사람이 어떤 함수의 데이터와 결과값을 몇 개 입력하면, 컴퓨터가 그것을 보고 사람이 의도한 함수에 매우 가까운 '''가설 함수'''(hypothesis)를 알아맞히는 방법입니다. 이때 식을 줄 수도 있고([[회귀]] 등), 아니면 다른 데이터를 넣었을 때의 결과값을 줄 수도 있습니다([[분류]] 등). 예를 들어, ([[선형 회귀]]) | ||
: (x, y) = (3, 7), (6, 8), (9, 9) | : (x, y) = (3, 7), (6, 8), (9, 9) | ||
라는 세 개의 데이터(x)와 | 라는 세 개의 데이터(x)와 결과값(y)을 주었고, 가설 함수가 | ||
: <math>H(x) = wx + b, \qquad</math>'''H'''ypothesis, '''w'''eight, '''b'''ias | : <math>H(x) = wx + b, \qquad</math>'''H'''ypothesis, '''w'''eight, '''b'''ias | ||
의 모양, 즉 [[일차식]]으로 주어졌다고 합시다. 그러면 컴퓨터는 w와 b를 바꾸어 가면서, 가설 함수와 데이터 사이의 차이를 최소화합니다. 최소화 과정을 거치면 컴퓨터는 다음의 결과를 낼 것입니다(약간의 오차는 있을 수 있습니다.): | 의 모양, 즉 [[일차식]]으로 주어졌다고 합시다. 그러면 컴퓨터는 w와 b를 바꾸어 가면서, 가설 함수와 데이터 사이의 차이를 최소화합니다. 최소화 과정을 거치면 컴퓨터는 다음의 결과를 낼 것입니다(약간의 오차는 있을 수 있습니다.): | ||
163번째 줄: | 159번째 줄: | ||
단지 데이터(x)만을 줍니다. 이때 컴퓨터는 주어진 데이터를 비슷한 것끼리 모으는 '''군집화'''를 할 수도 있고, 더 나아가 그 데이터의 분포를 맞히는 '''분포 추정'''을 할 수도 있습니다. | 단지 데이터(x)만을 줍니다. 이때 컴퓨터는 주어진 데이터를 비슷한 것끼리 모으는 '''군집화'''를 할 수도 있고, 더 나아가 그 데이터의 분포를 맞히는 '''분포 추정'''을 할 수도 있습니다. | ||
=== Reinforcement Learning=== | === Reinforcement Learning=== | ||
위 둘과 다르게, '''강화 학습'''은 현 상태를 보고 어떤 행동을 해야 좋을지를 판단합니다. 현 상태('''state''')에서 컴퓨터가 어떤 행동('''Action''')을 취하면 그에 따른 점수('''Result''', 보상)가 매겨집니다. 컴퓨터는 이 보상을 최대화하려고 다음에 어떤 행동을 해야 할 것인지 판단하는 정책('''Policy''')를 세웁니다. 예를 들어, [[자율 운전]]은 강화 학습의 예입니다. 사람이 운전하듯이, 자율주행 차량에 주어지는 데이터(state)는 카메라 영상이며, 이것으로 얼마나 앞에 무엇이 있는지를 판단합니다. 간단한 설명을 위해 왼쪽(-30도), 앞쪽(0도), 오른쪽(30도)으로의 세 거리를 측정할 수 있다고 합시다. 그리고 그 | 위 둘과 다르게, '''강화 학습'''은 현 상태를 보고 어떤 행동을 해야 좋을지를 판단합니다. 현 상태('''state''')에서 컴퓨터가 어떤 행동('''Action''')을 취하면 그에 따른 점수('''Result''', 보상)가 매겨집니다. 컴퓨터는 이 보상을 최대화하려고 다음에 어떤 행동을 해야 할 것인지 판단하는 정책('''Policy''')를 세웁니다. 예를 들어, [[자율 운전]]은 강화 학습의 예입니다. 사람이 운전하듯이, 자율주행 차량에 주어지는 데이터(state)는 카메라 영상이며, 이것으로 얼마나 앞에 무엇이 있는지를 판단합니다. 간단한 설명을 위해 왼쪽(-30도), 앞쪽(0도), 오른쪽(30도)으로의 세 거리를 측정할 수 있다고 합시다. 그리고 그 결과값이[[파일:MLRun.png.png|섬네일]] | ||
: (L, F, R) = (200, 100, 50) | : (L, F, R) = (200, 100, 50) | ||
이었다고 해 봅시다. 예를 들어 다음 그림과 같은 상황이 됩니다. | 이었다고 해 봅시다. 예를 들어 다음 그림과 같은 상황이 됩니다. | ||
175번째 줄: | 171번째 줄: | ||
== 어쨌든 시작해 보자!: 선형 회귀 == | == 어쨌든 시작해 보자!: 선형 회귀 == | ||
=== | === 일차원 선형 회귀 === | ||
가장 간단한 머신 러닝 예제는 선형 회귀입니다. 먼저, 간단하게 실숫값을 가지는 (x, y)가 주어진다고 합시다. | 가장 간단한 머신 러닝 예제는 선형 회귀입니다. 먼저, 간단하게 실숫값을 가지는 (x, y)가 주어진다고 합시다. | ||
: <math>(x_{i},~y_i) \in \mathbb R^2</math> | : <math>(x_{i},~y_i) \in \mathbb R^2</math> | ||
261번째 줄: | 257번째 줄: | ||
:<math>\mathrm{cost}(\mathbf x_i) = \sum_{j=1}^n (H(x_{ij}) - y_i)^2</math> | :<math>\mathrm{cost}(\mathbf x_i) = \sum_{j=1}^n (H(x_{ij}) - y_i)^2</math> | ||
또한 전체 cost는 모든 데이터에 대한 평균으로 정의합니다. | 또한 전체 cost는 모든 데이터에 대한 평균으로 정의합니다. | ||
:<math>\mathrm{cost} = \frac{1}{m} \sum_{i=1}^m \mathrm{cost} | :<math>\mathrm{cost} = \frac{1}{m} \sum_{i=1}^m \mathrm{cost}_i = \frac 1 m \sum_{i=1}^m \sum_{j=1}^n (H(x_{ij}) - y_i)^2</math> | ||