2017/07/16

윈도우즈(Windows) 10에 텐서플로우(TensorFlow) 설치 방법 // 파이썬(Python) 3.6, 아나콘다(Anaconda)3 4.4.0

0. 들어가며

윈도우즈에 아나콘다 배포판을 이용해서 파이썬을 설치하고, pip로 윈도우즈용 텐서플로우를 설치하는 과정을 다뤘습니다.

윈도우즈 10 환경에서 아나콘다3 최신 버전인 4.4.0 과 파이썬 3.6 기준으로 설치를 진행했습니다.


pip 로 텐서플로우 설치시 발생하는 오류( FileNotFoundError: [WinError 2] 지정된 파일을 찾을 수 없습니다 )에 대한 간단한 대응 방법과
경고(?) 메시지( The TensorFlow library wasn't compiled to use SSE / SSE2 / SSE3 / SSE4.1 / SSE4.2 / AVX / AVX2 / FMA instructions, but these are available on your machine and could speed up CPU computations. )에 대한 간단한 언급이 포함되어 있습니다.

본문은, 여친이 음스므로 음슴체


1. 구동 환경

텐서플로우(TensorFlow)는 초기에 리눅스(Linux)나 맥(Mac) OS X 환경만 지원하여,
윈도우즈(Windows)에서는 가상 환경 등을 이용해서만 구동 가능했던 것 같으나
텐서플로우 r0.12 버전부터는 윈도우즈 버전도 지원을 시작함

* 이 글에서는 윈도우즈 10 Pro (64비트)에 설치를 진행하였습니다.


텐서플로우는 주로(?) 파이썬(python)과 연계해서 사용하며,
윈도우즈용 텐서플로우는 파이썬 버전 3.5 이상(64비트만)에서만 구동 가능함

* 파이썬은 현재 2 버전과 3 버전에서 약간의 문법 차이가 존재하고, 두 종류의 버전이 병행해서 업데이트가 되고 있는 걸로... -.-a


2. 파이썬 설치 → 아나콘다 배포판 이용

파이썬을 본격적으로 이용하기 위해서는 여러 패키지들을 필수적으로 설치해야 하는데,
오픈소스에서 빈번하게 나타나는 버전 간 호환성 문제나 상호 의존성 등을 전부다 확인해가면서 필수 패키지들을 설치하기에는 시간 낭비 -.-a 가 너무 심하므로
파이썬과 필수 패키지들을 한꺼번에 간단히 설치할 수 있는 배포판을 이용하는 것이 정신적, 육체적 건강을 위해서 매우 권장됨

파이썬 배포판 중에서도 아나콘다( https://www.continuum.io/downloads )를 많이들 추천하는 듯 하여 그것을 이용함

* 개인용 컴퓨터에 처음으로 설치할 때는 이 방법이 편하지만, 기존에 쓰던 파이썬 개발환경에 텐서플로우를 합쳐야 한다거나 시스템을 다른 사람들과 공동으로 사용해야 하는 상황이라면 얘기가 약간 달라집니다. ^^;;


2-1. 아나콘다 배포판 설치

아래의 다운로드 사이트에서 Anaconda 4.4.0 For Windows 중 파이썬(Python) 3.6 버전 64비트 인스톨러를 다운로드하여 설치 진행

https://www.continuum.io/downloads#windows


아나콘다(Anaconda) 4.4.0 파이썬(Python) 3.6 버전 64비트 인스톨러 다운로드
아나콘다(Anaconda) 4.4.0 파이썬(Python) 3.6 버전 64비트 인스톨러 다운로드


다운받은 Anaconda3-4.4.0-Windows-x86_64.exe 를 실행하면, 웰컴!


Anaconda3 설치 - 시작은 가볍게, 넥스트!
Anaconda3 설치 - 시작은 가볍게, 넥스트!

Anaconda3 설치 - 답정너 아이 어그리 -.-;
Anaconda3 설치 - 답정너 아이 어그리 -.-;

Anaconda3 설치 - 설치 방식 선택
Anaconda3 설치 - 설치 방식 선택


내 계정에서만 돌려보는 걸로~


Anaconda3 설치 - 기본 설치 경로
Anaconda3 설치 - 기본 설치 경로


있어 보이게(?), 설치 경로 변경


Anaconda3 설치 - 설치 경로 (있어 보이게) 변경
Anaconda3 설치 - 설치 경로 (있어 보이게) 변경


있어 보이지 않나콘다? (반말이라기보다는 무리한 드립으로 봐주십쇼;;;)


Anaconda3 설치 - Path 환경 변수 설정 여부
Anaconda3 설치 - Path 환경 변수 설정 여부


첫번째 옵션의 설명에 따르면, PATH 설정은 아나콘다 설치를 마친 후에 윈도우즈 시작 메뉴에서 "add to PATH" 옵션으로 적용하는 게 낫다고 되어 있음. 일단 설치부터 마친 후에 그렇게 하는 걸로~


Anaconda3 설치 - 인스톨링
Anaconda3 설치 - 인스톨링

Anaconda3 설치 - 인스톨레이션 컴플릿
Anaconda3 설치 - 인스톨레이션 컴플릿

Anaconda3 설치 - 마침내 Finish
Anaconda3 설치 - 마침내 Finish


Next 를 누르다 보면 마침내 Finish에 이르게 됨.


2-2. 아나콘다 배포판 설치 후 PATH 설정


윈도우즈 10 시작 메뉴의 허무함 -.-;
윈도우즈 10 시작 메뉴의 허무함 -.-;


시작 메뉴에서 add to PATH 를 하라는 설명을 철썩같이 믿었더니만, 그런 메뉴는 안 보임. -.-;;; 설마 나만 모르는 그런 거?


윈도우즈 시스템 메뉴 중 고급 시스템 설정
윈도우즈 시스템 메뉴 중 고급 시스템 설정


하는 수 없이 전통적인 방법으로 PATH 를 추가함


윈도우즈 환경 변수 편집
윈도우즈 환경 변수 편집


제어판 -> 시스템 및 보안 -> 시스템 -> 고급 시스템 설정 -> 환경 변수


윈도우즈 환경 변수 중 시스템 변수의 Path 항목 편집
윈도우즈 환경 변수 중 시스템 변수의 Path 항목 편집


위쪽에 있는 {사용자}에 대한 사용자 변수 중 Path 를 편집해서 새로운 Path 를 추가해도 되지만
걍, 아래쪽 시스템 변수 중 Path 에 추가함. 우리는 시스템을 과감히 주무르는 위대한 텐서플로우 라이더들(?)

Path 선택 후 편집 버튼 클릭.


윈도우즈 환경 변수 중 Path 항목 편집
윈도우즈 환경 변수 중 Path 항목 편집


오른쪽 맨 위에 있는 새로 만들기 클릭


윈도우즈 환경 변수 중 Path 항목에 Anaconda3 설치 경로 추가
윈도우즈 환경 변수 중 Path 항목에 Anaconda3 설치 경로 추가



아까 프로그램 설치할 때 변경했던 경로인 D:\DevTools\Anaconda3 와 D:\DevTools\Anaconda3\Scripts 를 추가해줌.

*** Scripts 폴더 내에도 실행 파일들이 있어서 혹시나 하는 마음에 추가했습니다.


확인, 확인, 확인을 눌러서 창을 다 닫고,

윈도우즈키 + R 키로 실행 창을 띄운 다음 cmd 를 입력하고 엔터, 윈도우즈 콘솔창이 뙇!

*** 확인을 눌러서 path 적용이 된 상태에서 콘솔창을 띄워야 함. 순서 주의!


Python 설치 여부 및 버전 확인
Python 설치 여부 및 버전 확인


python -V 를 입력 하고 엔터 (V는 대문자)

설치된 Python 의 버전이 정상적으로 출력되면 Python 설치 성공

우리는 Python 3.6 버전으로 TensorFlow 설치를 진행하고 있다는 점을 다시 한번 명심.


*** 여기서 에러가 난다면, set path 명령어로 path 에 anaconda 설치 폴더가 들어 있는지 확인하고, anaconda 폴더가 path 경로에 없으면 path 추가 작업 실시 후에 콘솔창을 새로 열어서 다시 해볼 것.


3. 텐서플로우 설치

아나콘다를 설치하면 자동으로 설치되는 패키지 매니저인 pip 를 이용하여 텐서플로우를 설치함


3-1. pip 설치 확인

방금 전에 띄워 둔 윈도우즈 콘솔 창에서,
pip --version 으로 pip 설치 여부 및 버전 확인


pip 설치 여부 및 버전 확인
pip 설치 여부 및 버전 확인


(참고) pip 업그레이드 방법
아나콘다에 포함되어 있는 pip 을 (별도로) 최신 버전으로 업그레이드 하려면,
python -m pip install --upgrade pip 를 콘솔에서 실행하면 됨


pip 업그레이드
pip 업그레이드


3-2. 텐서플로우(TensorFlow) 설치 참고사항

Python 3.5 버전 때까지는 텐서플로우 구동에 msvcp140.dll 파일이 필요하니 설치하라는 안내가 있었으나, 이제는 그런 안내가 안 보임

따라서, 일단 패스하고 계속 진행

*** 본 게시물에 있는 최종 확인 단계에 이르기까지 저 파일로 인한 문제는 없었던 것 같습니다. ^^a


3-3. pip로 텐서플로우 설치

윈도우즈용 텐서플로우 설치 안내에 따르면,
링크 : https://www.tensorflow.org/install/install_windows

 - TensorFlow with CPU support only 버전이 설치가 쉽고 간단하니,
   처음 TensorFlow를 설치하는 경우에는 이 버전을 설치하라고 함

 - pip install 명령으로 설치하는 것을 추천한다고 함
   conda install 명령은 쓰지 말라고. (그런 게 있는 줄도 몰랐던 1인은 갸우뚱~)

 *** 설치 안내가 Python 3.5 버전용으로 작성되어서 그 후로 업데이트가 안 된 듯 함. 약간의 검색을 해보니 Python 3.6 버전용 TensorFlow도 공식적으로 나와있다고 함
 링크 : https://github.com/tensorflow/tensorflow#installation


cmd 로 콘솔창을 열어서 텐서플로우 설치 가이드에 있는 대로 설치 명령어 입력


pip로 텐서플로우(TensorFlow) 설치, pip install --upgrade tensorflow
pip로 텐서플로우(TensorFlow) 설치, pip install --upgrade tensorflow


pip install --upgrade tensorflow

*** 텐서플로우 설치 안내 사이트에 있는 pip3 는 아나콘다(Anaconda) 4.4.0 파이썬(Python) 3.6 에서 안 먹음 -.-;;  pip3(x) -> pip(o)


pip로 텐서플로우(TensorFlow) 설치, pip install --upgrade tensorflow
pip로 텐서플로우(TensorFlow) 설치, pip install --upgrade tensorflow


잘 됩니다~

-cp36-에서 Python 3.6 공식지원의 포스가 느껴지는군요! 홀~


pip로 텐서플로우(TensorFlow) 설치, pip install --upgrade tensorflow
pip로 텐서플로우(TensorFlow) 설치, pip install --upgrade tensorflow

DEPRECATION: Uninstalling a distutils installed project (html5lib) has been deprecated and will be removed in a future version.
DEPRECATION: Uninstalling a distutils installed project (html5lib) has been deprecated and will be removed in a future version.


DEPRECATION: Uninstalling a distutils installed project (html5lib) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.

앙대~ Deprecation 미우다~

뭘 또 맘대로 uninstall 하는 겨~ 무서우이~


FileNotFoundError: [WinError 2] 지정된 파일을 찾을 수 없습니다
FileNotFoundError: [WinError 2] 지정된 파일을 찾을 수 없습니다


FileNotFoundError: [WinError 2] 지정된 파일을 찾을 수 없습니다: 'D:\\DevTools\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.6.egg'

흠... 또 에러가 나오고...

*** 경로 중에 역슬래쉬(\)가 2번 연달아 나오는 것은 특수문자를 escape 처리하느라 덧붙인 게 그냥 다같이 출력되서 그런 듯?


잠시 고민을 해 보지만!!

이전에 TensorFlow 를 설치해 본 경험 상, 설치 도중에 에러가 나면 설치 명령 재실행 ㄱㄱ 가 정답! -o-; 이것 또한 설치 재시도-각!


FileNotFoundError: [WinError 2] 지정된 파일을 찾을 수 없습니다 해결
FileNotFoundError: [WinError 2] 지정된 파일을 찾을 수 없습니다 해결


역시!

역시는 역신가!

설치 명령을 다시 실행했더니 오류없이 넘어감 -.-;

*** 콘솔 창에서는 방향키 중 화살표 위쪽을 한번 누르면 바로 전에 입력했던 명령어가 자동으로 뜹니다. 그 다음에 엔터만 치면 됨.


3-4. 텐서플로우 설치 확인

텐서플로우 설치 안내 페이지 하단, 'Validate your installation'에 있는 Hello, TensorFlow! 예제 코드를 실행해 봄

링크 : https://www.tensorflow.org/install/install_windows


텐서플로우 설치 확인
텐서플로우 설치 확인


윈도우즈 콘솔창 띄우고 Python 으로 들어가숴~

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()

끄악... session 생성(?) 하면서 뭐라뭐라 에러가! ㅠ_ㅠ


The TensorFlow library wasn't compiled to use SSE / SSE2 / SSE3 / SSE4.1 / SSE4.2 / AVX / AVX2 / FMA instructions, but these are available on your machine and could speed up CPU computations
The TensorFlow library wasn't compiled to use SSE / SSE2 / SSE3 / SSE4.1 / SSE4.2 / AVX / AVX2 / FMA instructions, but these are available on your machine and could speed up CPU computations


*** (내용 추가) 에러처럼 보이는 저 메시지는 뭔가 안 맞는 게 있긴 하지만 그래도 되긴 된다~ 라는 거인 듯.


텐서플로우 설치 확인 완료
텐서플로우 설치 확인 완료


>>> sess = tf.Session()

근데 한번 더 입력하면 조용히 넘어감 -_-;; 뭐지 이거... 예의상 한번씩은 튕겨주는 건가


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

(불안불안했지만) hello 세션을 돌려서 결과 출력까지 완료! -.-v


*** 윈도우즈 콘솔창에서 테스트를 마치고 나서 보니, 시작메뉴 - Anaconda3 에 Anaconda Prompt 라는 게 있었네요. -.-a 윈도우즈 콘솔창과 비슷한 역할을 하는 녀석으로 보입니다.


3-5. 텐서플로우 설치 확인 - 스파이더(Spyder) 이용

아나콘다(Anaconda)를 설치할 때 함께 설치된 IDE(?)인 스파이더(Spyder)를 이용해서도 한번 확인을 해 봅니다.

시작 메뉴에서 Anaconda3 를 찾아 들어가서 스파이더를 실행하면,

아래와 같은 보안 경고 창이 뜸


스파이더(Spyder) 보안 경고
스파이더(Spyder) 보안 경고


통신이 필요한가봉가~ 액세스 허용 해드렸습니다~


스파이더(Spyder)
스파이더(Spyder)


스파이더의 늠름한 자태

스파이더맨: 홈커밍은 재밌게 잘 보았답니다~


스파이더(Spyder)에서 텐서플로우 설치 확인
스파이더(Spyder)에서 텐서플로우 설치 확인


우측 하단에 있는 콘솔(IPython console) 창에서 아래 명령어로 텐서플로우 임포트 및 실행 테스트 ㄱㄱ

윈도우즈 콘솔창에서 했던 내용과 동일함.

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow! I am comajava')
sess = tf.Session()
print(sess.run(hello))

(실행 결과)
b'Hello, TensorFlow! I am comajava'


*** 상식적으로는 작은 따옴표 안의 내용만 텍스트로 출력되어야 할 것 같은데, b'텍스트'  형태로 계속 출력되는 게 뭔가 거슬리는군요 -.-;;;


이번에는 다른 예제 실행.

a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))

(실행 결과)
42


문자열 출력과 산술 계산을 텐서플로우 세션을 이용해서 돌려보았습니다.

위 예제가 정상적으로 실행되었으니 이제는 데모 모델을 실행해 볼 차례


(참고) 텐서플로우 설치 경로 확인 방법

스파이더(Spyder) 콘솔 창에 아래 코드를 입력하고 엔터

import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))

다음과 같은 형태로 설치 경로가 출력됨

D:\DevTools\Anaconda3\lib\site-packages\tensorflow


4. 텐서플로우 데모 모델 테스트

드디어 텐서플로우를 본격적으로 구동!


4-1. 텐서플로우 데모 모델 실행

Python 3.5 버전용으로 텐서플로우를 설치할 때만 해도 시험용으로 사용할 데모 코드가 함께 설치 되었었고, 그와 관련된 안내 글도 있었는데... 버전이 올라가면서 삭제된 듯 합니다.

MNIST 라는 명칭(?)으로 불리는 손으로 쓴 숫자 이미지를 기계에게 학습시키는 예제였는데, 어딘가 숨어있지 않을까 하여 뒤져보니

제가 설정한 아나콘다 폴더 D:\DevTools\Anaconda3 의 하위에 다음과 같은 폴더가 있더군요.

\Lib\site-packages\tensorflow\examples\tutorials\mnist

mnist 가 요기잉네~


\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\mnist
\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\mnist


파이썬 실행 파일로 보이는 mnist.py 를 우선 열어보니,


mnist.py
mnist.py


힝, 속았지, 이 파일은 실행용으로 만들어진 게 아니란다~ 라는 문구가 뙇!

*** 실은 실행부터 냅다 해봤는데, 아무런 반응이 없어서 -.-; 그제서야 소스 코드를 열어 봄


실행은 fully_connected_* 파이썬 파일로 하면 된다고 하니, 그 파일을 슬쩍 열어봄


fully_connected_feed.py
fully_connected_feed.py


음~ 뭔가 트레이닝 시켜서 평가한다고 하는 듯?

코드는 충분히 복잡하니 -_-;; 해석은 나중으로 미루고 일단 런!


스파이더에서 돌려도 되겠으나, 친근한 윈도우즈 콘솔에서 실행하는 걸로~ ㅋ


텐서플로우(tensorflow) MNIST 예제
텐서플로우(tensorflow) MNIST 예제


파이썬 소스 파일 경로 입력을 위해서 윈도우즈 탐색기 주소 부분을 클릭하고 Ctrl + C

윈도우즈 콘솔창을 띄워서 코드 실행 명령을 입력


python fully_connected_feed.py 실행 대기
python fully_connected_feed.py 실행 대기


python D:\DevTools\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\mnist\fully_connected_feed.py

D:\DevTools\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\mnist 부분은 콘솔창에서 마우스 우클릭으로 붙여넣으면 되고,

\fully_connected_feed.py 부분은 \ful 정도까지만 입력한 다음 Tab 키를 누르면 됨


python fully_connected_feed.py 실행 중
python fully_connected_feed.py 실행 중


에러처럼 보이는 저 메시지는 뭔가 안 맞는 게 있긴 하지만 그래도 되긴 된다~ 라는 거인 듯.


python fully_connected_feed.py 실행 완료
python fully_connected_feed.py 실행 완료


실행 완료!!!

뭔가 그럴싸한 내용이 출력됨.

하지만, 뭐라고 한 건지는 나도 모름 -.-;


5. 마치며

기계 학습(?)을 마친 후에 임의의 이미지를 던져주고 그걸 어떻게 인식하는지 확인하는 방법을 예전 버전에서는 돌려봤었는데, 새로운 버전에서도 그 코드를 돌려보고 업데이트 예정.

진행 단계별로 화면 캡쳐해서 설명과 함께 올리는 게 쉬운 일이 아님 헉헉... 오늘은 여기까지.

모두들 안녕.


댓글 12개:

  1. 텐서플로우로 숫자 인식을 테스트하는 것은 예전에 썼던 내용 그대로 해도 잘 되네요.

    http://comajava.blogspot.kr/2017/01/tensorflow-mnist-python-35-windows.html

    *** 단, The TensorFlow library wasn't compiled to use SSE / SSE2 / SSE3 / SSE4.1 / SSE4.2 / AVX / AVX2 / FMA instructions, but these are available on your machine and could speed up CPU computations. 이 경고 메시지는 쏟아져 나옵니다. ㅎ;;;


    *** create_model_2.py 는 i5 CPU가 100% 풀로 씽씽 돌아가기를 수십분 간 지속하여서 컴퓨터가 돌아가실 것 같아;;; 과감히 중단시켰습니다. ㅎ;;;

    답글삭제
  2. NotFoundError: Failed to create a directory: /tmp\tensorflow
    요런 에러 메시지가 뜨네요. 혹시 해결 방법 있을까요...?

    답글삭제
    답글
    1. 얼핏 보기에

      경로 구분자(?)로 슬래쉬(/)와 역슬래쉬(\)가 섞여서 쓰인 것 같습니다. ^^a

      삭제
  3. 아 마지막 fully_connected_feed.py 부분 이야기였습니다.

    답글삭제
  4. 예 저도 역슬래쉬를 쓰는 게 맞다고 생각해서 그렇게 코드를 고쳤는데...그렇게 고치니까 이놈이 \tmp의 \t를 공백 처리해버리더라구요 ㅡ.ㅡ; 이것 때문에 고민입니다.

    답글삭제
    답글
    1. py 파일 앞 경로에 드라이브명부터 Full로 다 써보세요~ ^^a

      삭제
    2. \t 는 탭문자를 뜻하는 이스케이프 시퀀스입니다.

      삭제
    3. 넵.. 그건 맞는데
      소스 코드 내용 중에서 발생한 문제가 아니라
      윈도우즈 콘솔창에서 python 소스코드 실행을 위해 py 파일의 경로를 입력하는 과정에서 발생한 문제 아닌가요? ^^a

      삭제
    4. 해결했습니다.

      parser.add_argument(
      '--input_data_dir',
      type=str,
      default=os.path.join(os.getenv('TEST_TMPDIR', '\tmp'),
      'tensorflow/mnist/input_data'),
      help='Directory to put the input data.'
      )
      parser.add_argument(
      '--log_dir',
      type=str,
      default=os.path.join(os.getenv('TEST_TMPDIR', '\tmp'),
      'tensorflow/mnist/logs/fully_connected_feed'),
      help='Directory to put the log data.'
      )

      요 문장에서 \를 지우니까 잘 되네요.

      삭제
    5. 아, 소스 코드를 수정하고 계셨나요? ㅋㅋ

      제가 어떤 상황인지 잘못 이해했습니다.

      소스 코드 상이라면 기본적으로 경로구분자를 역슬래쉬랑 슬래쉬를 섞어서 쓰면 안될 듯 합니다. ^^a

      삭제
  5. 혹시 너무예전글이라 확인 하실지는 모르겠지만 ㅠㅠ
    여태 헤메다 이 글을보고 드디어 텐서플로우까지 설치가 되었습니다!
    그런데 분명 콘솔에서 import tensorflow as tf 잘되었는데,
    스파이더에서 실행하면
    ImportError: No module named 'tensorflow' 가 뜨네요.
    경로 설정이 문제일까요? 그런데 스파이더에서 경로를 바꿔서 실행하는 방법을 모르겠어요 ㅠㅠ
    뭐가 잘못된걸까요?ㅠㅠ

    답글삭제
    답글
    1. 안녕하세요!
      저는 겪어본 적이 없는 문제라서 답을 드리기가 어려울 것 같습니다.
      ...만, 구글링을 통해서 해결을 하시리라 기대해 봅니다! ^^;;

      삭제