tensorflow 윈도우 환경 빌드

readme 만 잘 읽고 따라하면 특별할 것은 없다.

근데 정말 잘(!) 읽어야 하므로 주의사항을 기록해 둔다.

 

build tool

bezel 과 cmake 중 하나를 선택할 수 있다.

bezel 이 더 좋아보이긴 하지만 윈도우 환경을 제대로 지원하지 않으므로 mingw 를 설치하여야 한다. 그러니 왠만하면 cmake 로 빌드하자.

 

prerequisite

swig

python 3.5

  • numpy 1.11.0 이상이 설치되어 있어야 한다.

visual studio 2015

(중요) cmake 3.5~3.6

  • 현재 cmake 버전이 3.8rc 까지 나왔는데 이걸로 빌드하면 nvcc 쪽에서 공백 처리 문제 때문에 빌드 에러 난다.
  • 이 문서에서는 이 팁이 가장 중요하다. cmake 버전 확인!
  • 관련 issue

nvidia cuda toolkit 8.0

nvidia cudnn 5.1

 

여기까지만 구성하면 나머지는 readme 의 설명대로 따르면 된다.

cmake 버전만 조심하자.

 

 

python trivia

개요

python 이해도를 높이기 위한 목적으로,

잘 만들어진 library 소스코드(tensorflow)를 보다가 특기할 만한 짧은 내용들을 간략히 소개한다.

 

__future__

compiler 지시자로 동작한다.

하위 호환성이 없는 기능을 미리 사용하기 위함이다.

링크 : PEP 236 – Back to the __future__

링크 : future statement

 

__all__

init.py 내에서 작성하는 variable 이다.

package 내의 공개 가능한 submodule 의 범위를 한정하기 위함이다.

복잡한 프로젝트의 구조와 별개로 사용자 인터페이스를 단순하게 하고 싶을 때 사용할 수도 있다.


# tensorflow\__init__.py

# tensorflow.python 패키지 하위의 submodule 들을 사용자가 접근할 때

# tensorflow.xxx 으로 사용 가능하도록 한다.

from tensorflow.python import *

링크 : importing * from a package

 

pylint

정적분석 도구다.

PEP8 스타일 가이드를 따르도록 도와준다.

pylint: 로 시작하는 주석으로  message 를 제어할 수 있다.

# pylint: disable=wildcard-import
from tensorflow.python import *
# pylint: enable=wildcard-import

링크 : PEP8 style guilde for python code

 

SWIG

python – native code wrapper 다.

같은 목적의 도구로 boost::python 가 있다.

둘 다 써보지 않아서 잘은 모르겠지만

SWIG 는 별도의 인터페이스 file 을 작성하여야 하는 번거로움이 있는 대신

python / tcl / perl / java /c# 등 다양한 타겟으로 인터페이스가 가능하다.

boost 빠인 나로선 boost::python 쪽에 더 마음이 간다.