728x90
반응형

참고자료 1 : http://daddynkidsmakers.blogspot.kr/2017/05/windows-10-tensorflow.html






설치환경


- Windows 10, 64bits

- Intel core 사용중 (추후 GPU 구입 예정)

* 보통 딥러닝을 하기 위한 CUDA 라이브러리를 사용하기 위해 성능이 좋은 GPU가 사용된다. 참고로 NVIDA GPU가 아니라면 CUDA 라이브러리를 쓸 수 없다. 하지만 간단한 예제 프로그래밍은 CPU로도 가능하며, GPU 와 설치방법이 다르다. (아주 약간)


- Python 3.5 버전 (다운로드 : https://www.python.org/downloads/release/python-353/ )

- Anaconda 4.2.0 버전 (다운로드 : https://www.continuum.io/downloads )

가상환경을 사용한다면 ! 그 이상인 버전이어도 상관 없다. anaconda 4.3.0 이후 버전은 python 3.6 을 포함하고 있기 때문에, 충돌이 발생할 수 있으나 가상환경을 생성할 때 파이썬 버전을 지정하여 이를 해결 할 수 있다. 



<참조글>

이 Tensorflow를 설치를 하려면 파이썬이 기본으로 설치가 되어 있어야 한다. 하지만 파이썬에서 그냥 설치하는 것보다는 파이썬의 머신러닝 라이브러리인 sklearn(scikit-learn, 사이킷런이라고 읽음) 등의 패키지와 Jupyter Notebook 등을 모두 포함한 배포 패키지인 아나콘다를 설치해야 머신러닝 하기가 편리하다.


2.png
<파이썬과 아나콘다 환경 비교>


출처 : http://blog.naver.com/PostView.nhn?blogId=nbic2014&logNo=220948501051>
그리고 더 중요한 것은 아나콘다에는 파이썬도 포함되어 있다.














Windows 환경에서의 Anaconda를 이용한 Tensorflow CPU 버전 설치하기






1. Anaconda 설치하기 


윈도우 10 환경에서는 도커(Docker) 기반 텐서플로우 설치 방법과 아나콘다(Anaconda) 기반 설치방법이 있다. 필자는 아나콘다를 이용하여 텐서플로우를 설치하였다.


* 설치 할 때 폴더 지정시 C:\Anaconda3\ 이라고 지정할 것

* 폴더명에 한글이 없어야함 (나중에 _lstm_ops.dll not found 관련 오류가 날 수도 있음)




2. Tensorflow 설치하기


텐서플로우는 구글에서 공개한 머신러닝 플랫폼이다. 

(텐서플로우 설치법[영문] https://www.tensorflow.org/install/install_windows)


먼저 텐서플로우를 설치하기 위해 아나콘다 콘솔 메뉴(Anaconda Prompt)를 실행한다.


2.1 pip 업그레이드


python -m pip install --upgrade pip 



2.2 Conda 가상환경 생성


conda create -n 가상환경이름 python=3.5 



2.3 Tensorflow 설치하기


필자는 가상환경 이름을 tensorflow 라고 지정해주었다. 

나의 가상환경인 tensorflow 를 활성화 해주고, pip install 명령어를 실행하여 tensorflow를 설치한다.

activate tensorflow 

pip install tensorflow 


* GPU 버전은 tensorflow-gpu 라고 치면 된다. (CUDA 8.0, CuDNN 필요)




3. 설치 확인하기


pip 로 설치한 내역을 확인 할 수 있다.

pip freeze





4. Jupyter Notebook 설치하기


확인이 되었다면, 간단한 텐서플로우 테스트를 할 수 있다.

텐서플로우 코드를 짜는데는 Pycham, Jupyter notebook, spyder 등이 있다. 

필자는 Anaconda 를 설치하면 자동으로 설치되는 Jupyter notebook 을 이용하여 설치 확인을 한다.


다시 콘솔창에서 아래 명령어를 실행하여 쥬피터 노트북을 설치한다. 

conda install jupyter notebook 


* 쥬피터 노트북 암호설정은 jupyter notebook password 라는 명령을 통해서 설정





5. Jupyter Notebook 실행하기


tensorflow 라는 가상환경이 활성화 된 상태에서 아래 명령어를 프롬프트에 입력한다.

jupyter notebook


브라우저가 자동으로 실행되며 localhost:8888 로 접속되어 쥬피터 노트북이 구동된다.





6. 새로운 Notebook 생성하기


Home 탭에서 New 메뉴의 Python3 메뉴를 선택하여 새로운 노트북을 생성한 뒤, 아래 코드가 잘 실행되는지 테스트해본다.


import tensorflow as tf 


Shift+Enter 





에러가 없으면 성공한 것이다.




7. 파이썬 기타 라이브러리 설치하기


Jupyter 를 종료하기 위해 다시 프롬프트 창에서 Ctrl+C 를 눌러서 종료해준다.

파이썬 기타 라이브러리는 pip 명령어를 통하여 설치한다.


pip install numpy

pip install matplotlib


하나씩 써도 되지만 여러개씩 써도 된다.

pip install pandas pillow graphviz


모든 라이브러리를 설치하고 싶다면

pip install anaconda



이와 같은 라이브러리는 아래 경로에 위치하고 있다. 

C:\Anaconda3\envs\tensorflow\Lib\site-packages


만일, 라이브러리 설치가 제대로 되지 않는다면...

C:\Anaconda3\Lib\site-packages

이 곳에 있는 라이브러리를 복사하여 붙여넣어주면 된다. 





8. 가상환경 종료하기


deactivate tensorflow










시행착오를 참 많이 겪었다.


1. _lstm_ops.dll not found 에러 

NotFoundError: C:\Users\내이름\Anaconda3\lib\site-packages\tensorflow\contrib\rnn\python\ops\_gru_ops.dll not found


이 에러는 아스키코드와 관련된 문제로, 파일명에 한글이 존재할 때 일어난다고 했다. 

사용자명이 한글로 되어있었는데, 사용자명이 들어간 폴더위치에 아나콘다를 설치하는 바람에

다시 삭제하고 다시 설치를 해서 해결을 했다.

관련 사이트 : https://github.com/tensorflow/tensorflow/issues/9481




2. ImportError: No module named 'matplotlib.externals' 에러 

이 에러는 아직도 해결을 하지 못하다가 폴더를 옮겨서 해결을 했다..

저번에 가상환경을 다시 아나콘다 라이브러리를 모두 포함하여 생성하였더니 해결이 됬다.

예상하건대 해결법들은 다음과 같다.


1). 아나콘다 라이브러리를 모두 포함하여 가상환경을 다시 생성 (꽤 오래 걸림)

conda create -n 가상환경이름 python=3.5 anaconda 


2) 폴더 옮기기 (추천)

C:\Anaconda3\Lib\site-packages\matplotlib 에 있는 externals 폴더를 

C:\Anaconda3\envs\tensorflow\Lib\site-packages\site-packages\matplotlib 

이곳에 옮겨주면 아주 잘~된다. 


3) git에 올라온 해결법 (아무 도움 되지 않았다 나는)

#8332 : https://github.com/matplotlib/matplotlib/issues/8332/

#5633 : https://github.com/matplotlib/matplotlib/issues/5633/

https://stackoverflow.com/questions/45103248/importerror-no-module-named-matplotlib-externals


4) matplotlib 삭제하고 다시 설치하기 

pip uninstall matplotlib 

pip install matplotlib 

이 때 가상환경이 잘 활성화 되어있는지 확인하고 할 것.

콘다 환경에서 삭제 할 시 머리가 아파짐 5번도 마찬가지.


5) matplotlib 업그레이드 해보기

pip pip install matplotlib --upgrade --ignore-installed six





3. _getfullpathname: embedded null character 에러


C:\Anaconda3\envs\tensorflow\Lib\site-packages\site-packages\matplotlib\font_manager.py 


위 경로에 있는 font_manager.py 파일의 일부를 아래와 같이 수정한다.

한줄 정도 수정하면 된다. 

인터넷에 돌아다니는 수정된 font_manager.py 파일을 받지 말고 직접 수정하도록 한다.

왜냐하면 인터넷에 돌아다니는 수정된 파일은 자기 matplotlib 파일의 버전과 맞지 않을 수 있기 때문이다. 버전이 맞지 않는데 다른 것을 가져와 덮어 씌워버리면, get_font 어쩌구 문제가 발생한다. 


        try:
            for j in range(winreg.QueryInfoKey(local)[1]):
                try:
                    key, direc, any = winreg.EnumValue( local, j)
                    if not is_string_like(direc):
                        continue
                    if not os.path.dirname(direc):
                        direc = os.path.join(directory, direc)
                    # direc = os.path.abspath(direc).lower()
                    # if os.path.splitext(direc)[1][1:] in fontext:
                    #     items[direc] = 1
                    direc = direc.split('\0', 1)[0]
                except EnvironmentError:
                    continue
                except WindowsError:
                    continue
                except MemoryError:
                    continue
            return list(six.iterkeys(items))



728x90
반응형