평소에 c와 c#을 공부하던 나지만 최근 머신러닝에 관심이 많이 생겨 파이썬 기초만 후다닥 조진 후 바로 오픈소스 머신러닝 플랫폼으로 텐서플로우 Tensorflow를 골랐습니다.

 

처음엔 설치부터 공부까지 순탄할 줄 알았으나 공식 홈페이지에서 정규 설치과정을 차근차근 밟고도

설치 후 엄청 애를 먹었기에 필자가 겪었던 오류 위주로 해결방법을 제시해 드리려고 합니다.

설치하면서 진짜 돌아버리는 줄 알았습니다.

 

대부분의 블로그에선 텐서플로우 구버전을 다루고 있고 함께 필요한 패키지와 툴킷들의 버전이 하나라도 틀어지면 무수한 오류를 뱉어냅니다. 그리고 CPU와 GPU용을 따로 설치했던 옛날과 달리 현제 통합되었기 때문에 지금 최신 버전인 2.2.0 설치법을 기준으로 설명해보려 합니다.

 

파이썬은 가장 최신버전인 3.7을 설치합니다. 파이썬은 다 깔려 있으리라 보고 따로 언급 하지 않겠습니다.

 

우선 Tensorflow 2.2.0 설치방법과 순서

1. cuda 툴킷10.0 설치

2. cuDNN 설치

3. tensorflow 설치

 

1. CUDA ToolKit 설치하기 (10.0 버전)

https://developer.nvidia.com/cuda-downloads

 

CUDA Toolkit 10.2 Download

Select Target Platform Click on the green buttons that describe your target platform. Only supported platforms will be shown. Operating System Architecture Distribution Version Installer Type Do you want to cross-compile? Yes No Select Host Platform Click

developer.nvidia.com

위 사이트로 접속한 후 그대로 10.2 version을 받지 마시고 10.0 version을 받으러 가야 합니다.

Legacy Releases를 눌러 줍니다.

 

 

10.0이라고 쓰인 것을 눌러 준 후

 

 

 

본인의 개발환경에 맞게 설정하여 다운로드해 줍니다.

local과 network의 차이는

local은 설치 파일을 통째로 받는 것,

network는 설치 파일을 다운로드하는 프로그램을 받는 것인데

제 경험상 network로 설치 파일을 다운로드하는 방법이 훨씬 빨랐던 것 같네요.

 


2. cuDNN설치

https://developer.nvidia.com/rdp/cudnn-download

cuDNN은 NVIDIA계정이 필요합니다. 로그인을 하신 후

I Agree to the Terms of the blablabla 좌측에 체크박스를 클릭하면 아래에 다운로드 링크가 뜹니다.

cuda toolkilt에 맞는 버전을 눌러 본인의 개발환경에 맞는 것으로 다운로드해 줍니다.

ex) windows 10, Linux 

 


 

3. tensorflow 2.2.0 설치

아나콘다를 설치하면 생기는 아나콘다 프롬프트나 윈도우의 명령 프롬프트를

관리자 권한으로 실행하여 줍니다.

 

 

pip3 install --upgrade pip

 

 

우선 파이썬 패키지를 관리해주는 시스템인 pip를 업그레이드해야 합니다.

 

pip3 install --user --upgrade tensorflow

시스템 위치에다 텐서플로우를 설치합니다. 가상 환경을 만들어 사용하면 나중에 편하지만 당장에 맞닥뜨릴 수도 있는 오류가 무서우니 그냥 이렇게 합니다.

 

(base) C:\Users> python
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.

import tensorflow as tf

이제 아무 프롬프트에서 python을 쳐 파이썬으로 진입 후 텐서플로우를 임포트 해주어 오류가 없는지,

설치가 잘 되었는지 확인해줍니다.

 

 

 

 

 

 

 

 

 

 


 

위 과정을 잘 따라 오셨나요?

>>> import tensorflow as tf
>>> 

텐서플로우를 임포트 해 아무런 오류가 안뜨고 정상적으로 작동하면 박수를 쳐도 좋습니다.

 

 

 

 

>>> import tensorflow as tf
2020-05-30 20:30:25.326960: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 
Could not load dynamic library 'cudart64_100.dll';dlerror: cudart64_100.dll not found

 

tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll';dlerror: cudart64_100.dll not found

 

cudart64_100.dll 또는 cudart64_101.dll을 찾을 수 없다거나 cc:55, cc:29 같은 오류를 뿜어내면

 Cuda toolkit과 cuDDN설치방법을 정독 후 다시 설치 해 주세요.

 

PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/bin:$PATH"
PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/extras/CUPTI/libx64:$PATH"
PATH="/c/tools/cuda/bin:$PATH"

 

환경변수를 수동으로 넣어야 할 수도 있습니다.

 


 

Traceback (most recent call last): File "", line 1, in File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\__init__.py", line 41,
in from tensorflow.python.tools import module_util as _module_util File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\__init__.py", line 53,
in from tensorflow.core.framework.graph_pb2 import * File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\core\framework\graph_pb2.py",line 7, 
in from google.protobuf import descriptor as _descriptor 
ImportError: cannot import name 'descriptor' from 'google.protobuf' (unknown location)

Traceback (most recent call last): File "", line 1, in File

"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\__init__.py", line 41, in from tensorflow.python.tools import module_util as _module_util File "C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\__init__.py", line 53, in from tensorflow.core.framework.graph_pb2 import * File

"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\core\framework\graph_pb2.py", line 7, in from google.protobuf import descriptor as _descriptor ImportError: cannot import name 'descriptor' from 'google.protobuf' (unknown location)

 

tensorflow를 임포트 후 'descriptor'와 'google.protobuf'를 언급하며 임포트 오류가 떳을 때

# 삭제
pip3 uninstall protobuf

# 설치
pip3 install protobuf

protobuf를 삭제 후 재설치 해줍니다.

 

다른 ImportError도 마찬가지로 뒤에 어떤 패키지가 죽을 쑤는지 확인 한 후 해당되는것을 재설치 합니다. 

 


 

Traceback (most recent call last): File "", line 1, in File

"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\__init__.py", line 41, in from tensorflow.python.tools import module_util as _module_util File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\__init__.py", line 74, in from tensorflow.python.ops.standard_ops import * File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\ops\standard_ops.py", line 26, in from tensorflow.python import autograph File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\__init__.py", line 37, in from tensorflow.python.autograph.core.converter import ConversionOptions File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\core\converter.py", line 75, in from tensorflow.python.autograph.pyct import transformer File
"C:\Users\AppData\Roaming\Python\Python37\sitepackages\tensorflow\python\autograph\pyct\transformer.py", line 26, in from tensorflow.python.autograph.pyct import loader File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\pyct\loader.py", line 31, in from tensorflow.python.autograph.pyct import origin_info File 
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\pyct\origin_info.py", line 31, in from tensorflow.python.autograph.pyct import pretty_printer File
"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\pyct\pretty_printer.py", line 23, in import termcolor 
ModuleNotFoundError: No module named 'termcolor'

 

 

Traceback (most recent call last): File "", line 1, in File

"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\__init__.py", line 41, in from tensorflow.python.tools import module_util as _module_util File "C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\__init__.py", line 74, in from tensorflow.python.ops.standard_ops import * File "C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\ops\standard_ops.py", line 26, in from tensorflow.python import autograph File "C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\__init__.py", line 37, in from tensorflow.python.autograph.core.converter import ConversionOptions File "C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\core\converter.py", line 75, in from tensorflow.python.autograph.pyct import transformer File

"C:\Users\AppData\Roaming\Python\Python37\sitepackages\tensorflow\python\autograph\pyct\transformer.py", line 26, in from tensorflow.python.autograph.pyct import loader File "C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\pyct\loader.py", line 31, in from tensorflow.python.autograph.pyct import origin_info File "C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\pyct\origin_info.py", line 31, in from tensorflow.python.autograph.pyct import pretty_printer File

"C:\Users\AppData\Roaming\Python\Python37\site-packages\tensorflow\python\autograph\pyct\pretty_printer.py", line 23, in import termcolor ModuleNotFoundError: No module named 'termcolor'

 

이런식으로 특정 모듈을 언급하며 모듈을 찾을 수 없다고 나오는 오류의 형태도 마찬가지로

해당 모듈을 삭제 후 재설치 합니다.

 

pip3 uninstall termcolor

pip3 install termcolor

제거 하려할때 이미 없는경우엔 설치만 합니다.

 


 

다른 모든 오류메세지들의 해결방법은

https://www.tensorflow.org/install/errors?hl=ko

 

빌드 및 설치 오류 메시지  |  TensorFlow

TensorFlow는 GitHub 이슈 및 Stack Overflow를 사용하여 빌드 및 설치 문제를 추적하고 문서화합니다. 다음 목록은 오류 메시지를 해결 방법이나 토론에 연결합니다. 나열되지 않은 설치 또는 빌드 문제�

www.tensorflow.org

에서 확인 할 수 있으니 참고 바랍니다.

 

어쩌다 머신러닝을 알게되어 한번 공부해보고자 했던 텐서플로우가 설치 전부터 이렇게 애를 먹일 줄은

몰랐네요... 이제부터 시작입니다. 모두 열심히 파이팅 !!

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기