9일, 구글이 공식 블로그를 통하여 “텐서플로우”라는 머신러닝 도구를 오픈소스 프로젝트로 공개했다. 게다가 누구나 무료로 사용할 수 있도록 개방했다.
자세한 내용은 다음의 구글 공식 블로그 를 참고하자. 과연 구글신이라 불릴만하다.
이번 포스트에는 TensorFlow 설치기(정확히는 삽질기)를 공유한다.
설치한 장비 스펙
- iMac (21.5-inch, Late 2009)
- OS X El Capitan v10.11.1
설치 준비
다음의 GitHub 저장소 를 참고하여 설치를 진행한다.
TensorFlow Binary Installation
위의 GitHub 페이지의 README.md 파일에 설명해 둔 내용 중 Binary Installation -> Mac OS X 부분을 참고하여 TensorFlow CPU-version 을 설치한다.
$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl요고 이렇게 한 줄 명령이다. $ pip install https://***.whl
아래도 마찬가지…
ERROR ㅠㅠ
역시 한 번에 쉽게 되는 일은 없다.ㅡㅡ;
$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
You are using pip version 6.1.1, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
***
OSError: [Errno 1] Operation not permitted: '/var/folders/***/six-1.4.1-py2.7.egg-info'너무 길어서 일부분은 생략한다. ( *** 부분이 생략한 부분이다. )
pip 를 업그레이드하라는 메시지와 Operation not permitted 라는 에러 메시지가 보인다.
pip Upgrade
친절하신 조언대로 우선, pip 를 업그레이드해 보았다.
$ pip install --upgrade pip
***
OSError: [Errno 13] Permission denied: '/Library/Python/***/dependency_links.txt'Permission denied 란다.
super user 권한으로 다시 시도해 보았다.
$ sudo pip install --upgrade pip
***
Successfully installed pip-7.1.2TensorFlow Binary Installation (재시도)
pip 를 업그레이드 하였으니 아까 실패했던 부분부터 다시 시도해 보았다.
아까 Operation not permitted 메시지가 보였으니 이후부터는 모두 super user 권한으로 진행하기로 한다.
$ sudo pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
***
OSError: [Errno 1] Operation not permitted: '/tmp/pip-fQhDIu-uninstall/***/six-1.4.1-py2.7.egg-info'뭐지???
six 1.4.1 이라는게 지원되지 않는 버전인가 보다. 구글링해 보니 무시하고 설치하도록 다음 옵션을 넣으란다. ( –ignore-installed six )
해당 옵션을 넣고 재시도 (이 부분은 삽질이다. 따라하지 마시고 맨 아래 “정리” 섹션을 보시라.)
$ sudo -H pip install --ignore-installed six https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
***
Successfully installed numpy-1.8.0rc1 six-1.4.1 tensorflow-0.5.0Try your first TensorFlow program
설치 완료된 것 같아서 제시된 예제를 실행해 보았다.
$ python
>>> import tensorflow as tf
***
import six.moves.copyreg as copyreg
ImportError: No module named copyregImportError 다. 메시지를 보아 six 라는게 버전을 꼭 맞춰줘야 하는 것 같다.
six 업그레이드
$ sudo easy_install -U six
***
Removing six 1.4.1 from easy-install.pth file
Adding six 1.10.0 to easy-install.pth file
Installed /Library/Python/2.7/site-packages/six-1.10.0-py2.7.egg
Processing dependencies for six
Finished processing dependencies for sixsix 1.4.1 을 삭제하고 six 1.10.0 을 설치했다고 한다.
Try your first TensorFlow program (재시도)
$ python
Python 2.7.10 (default, Aug 22 2015, 20:33:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
can't determine number of CPU cores: assuming 4
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4
can't determine number of CPU cores: assuming 4
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42드디어 성공!!!
위의 can’t 어쩌고 하는 메시지는 CPU 코어 갯수를 정할 수 없어서 4개로 가정한다는 의미이므로 예제를 실행하는데는 무리가 없다.
실제 기계학습(Machine Learning) 을 진행할 때에는 장비의 CPU 스펙을 잘 고려하여 조정하면 되겠다.
정리
위의 내용들은 삽질한 과정들을 정리한 내용이다. 사실은 훨씬 더 길었지만 불필요하거나 중복되는 부분들은 과감히 생략했다.
실제 설치할 때에는 필자와 같이 삽질할 필요없이, 다음 순서대로 진행하면 되겠다.
# six 업그레이드 (필자의 버전 : six 1.10.0)
$ sudo easy_install -U six
# python 설치 (필자의 버전 : Python 2.7.10)
$ brew install python
# pip 업그레이드 (필자의 버전 : pip 7.1.2)
$ sudo pip install --upgrade pip
# TensorFlow 설치
$ sudo pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whlTrain your first TensorFlow neural net model
설치를 완료하고 위의 예제까지 오류없이 진행했다면, 실제 신경망 모델링을 시도해 보자.
우선, 맨 위에 있는 GitHub 저장소 를 다운로드하자.
$ git clone https://github.com/tensorflow/tensorflow.git완료했으면, 아래와 같이 실행해 보자.
$ cd tensorflow/tensorflow/models/image/mnist
$ python convolutional.py
...
Epoch 9.89
Minibatch loss: 1.601, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 1.0%
Test error: 0.8%이 예제는 “LeNet-5-like convolutional MNIST model” 의 예제라고 한다.
그럼, 머신러닝의 바다에 빠져 보시라.
참고로, 필자의 6년 된 장비에서는 이 예제로 학습하는데에 1 시간 정도 걸렸다.