win10[10.0.14393],有GPU的硬件。
vs2015 update3[14.0.25431.01 Update3]、
cmake 3.7.2。
git[git version 2.11.0.windows.1]、
python3.6.1、CUDA8.0、cuDNN5.1、swigwin-3.0.12、
numpy-1.13.0+mkl-cp36-cp36m-win_amd64.whl[http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy]
wheel(生成tensorflow_gpu-1.2.0-cp36-cp36m-win_amd64.whl需要安装python的wheel包)
cuda_8.0.61_win10.exe下载地址:
http://developer.download.nvidia.com/compute/cuda/8.0/secure/Prod2/local_installers/cuda_8.0.61_win10.exe?autho=1487739113_9ad462b1e508ab177490b79065da6a6a&file=cuda_8.0.61_win10.exe
安装后有如下环境变量:
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
CUDA_PATH_V8_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
NVCUDASAMPLES8_0_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
NVCUDASAMPLES_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
NVTOOLSEXT_PATH=C:\Program Files\NVIDIA Corporation\NvToolsExt\
cuDNN下载需要注册个账号。下载cudnn-8.0-windows10-x64-v5.1-zip后解压到 C:\Program Files\cuda
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/cudnn-8.0-windows10-x64-v5.1-zip
C:\Program Files\cuda下有bin、include、lib3个目录。
设置环境变量
CUDNN_ROOT=C:\Program Files\cuda
安装pthon3.6.1及必要组件
pytho3.6.1下载地址:https://www.python.org/ftp/python/3.6.1/python-3.6.1-amd64.exe
安装到c:\python36。安装时选择设置环境变量、勾选pip。
安装后,环境变量path中会加入如下两项(如果你安装了其他版本的python,请确保这个环境变量在path的较前位置)。
注意:
python安装在[Advanced Options]选项页中需要勾选
【DownLoad debug binaries (requires VS 2015 later)】
# %path%环境变量中有如下两行
c:\Python36\Scripts\
c:\Python36\
从http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy下载numpy-1.13.0+mkl-cp36-cp36m-win_amd64.whl
并安装。
pip3 install numpy-1.13.0+mkl-cp36-cp36m-win_amd64.whl
下载:swigwin-3.0.12
https://sourceforge.net/projects/swig/files/latest/download?source=typ_redirect
解压到d:\install\swigwin-3.0.12
# 在D:\git\DeepLearning目录
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
# D:\git\DeepLearning\tensorflow
git checkout -b b1.2.0 v1.2.0
git submodule update --init --recursive
根据tensorflow\tensorflow\contrib\cmake\README.md说明,设置SWIG_EXECUTABLE、PYTHON_EXECUTABLE、PYTHON_LIBRARY、CUDNN_HOME变量。
SWIG_EXECUTABLE=D:/install/swigwin-3.0.12/swig.exe
PYTHON_EXECUTABLE=c:/python36/python.exe
PYTHON_LIBRARY=c:/python36/libs/python36.lib
CUDNN_HOME=C:/Program Files/cuda
勾选除一下三项外的所有选项
tensorflow_BUILD_CC_TESTS
tensorflow_ENABLE__SSL_SUPPORT
tensorflow_WIN_CPU_SIMD_OPTIONS
设置CMAKE_INSTALL_PREFIX目录
D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build1.2.0/tensorflow
指定:源码目录是编译目标目录
D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake
D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build1.2.0
# 注意[D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build]的路径不要太长,
# 因为在编译时,build目录下还会有很多子目录,如果最终长度超过255,
# 将会因为文件拷贝操作失败导致编译失败。
# 至少在1.3.0-rc2中,使用[D:/git/DeepLearning/tensorflow/tensorflow/contrib/cmake/build1.3.0-rc2]
# 出现了文件名称过长的编译前、编译后文件操作命令错误。
依次点击[configure]和[Generate]按钮,并选择Visual Studio 14 2015 Win64
编译选项。生成的解决方案在D:\git\DeepLearning\tensorflow\tensorflow\contrib\cmake\build1.2.0\tensorflow.sln
如下图所示:
使用vs2015打开D:\git\DeepLearning\tensorflow\tensorflow\contrib\cmake\build1.2.0\tensorflow.sln
共有254个项目。先编译Release版本。(Debug版本有问题,未解决)
编译过程中会下载以来代码,比较漫长,耐心等待即可。
Release版最后出现:LINK : fatal error LNK1181: 无法打开输入文件“\pywrap_tensorflow_internal.lib”
错误。
这是因为3个项目的配置有问题,修改如下:
# 修改这三个项目的配置项
_beam_search_ops
_gru_ops
_lstm_ops
配置属性==>连接器==>常规==>附加库目录==>添加:$(SolutionDir)$(Configuration);
再次编译,即可全部编译通过。默认调过了。如果还有问题,就单独生成一下pywrap_tensorflow_internal_static和pywrap_tensorflow_internal
。
目前tensorflow-gpu1.2.0-rc0和tensorflow-gpu1.2.0的debug版本编译还有些问题。
tensorflow_gpu-1.2.0-cp36-cp36m-win_amd64.whl
注意:此处需要安装python的wheel包
pip3 install wheel
默认编译tensorflow会跳过tf_python_build_pip_package
项目。找到 tf_python_build_pip_package
项目,右键单独生成一下,即可生成 tensorflow_gpu-1.2.0-cp36-cp36m-win_amd64.whl
安装包。生成在目录:
D:\git\DeepLearning\tensorflow\tensorflow\contrib\cmake\build1.2.0\tf_python\dist\
tensorflow_gpu-1.2.0-cp36-cp36m-win_amd64.whl
用自己生成的tensorflow包安装。
pip3 install D:\git\DeepLearning\tensorflow\tensorflow\contrib\cmake\build1.2.0\tf_python\dist\tensorflow_gpu-1.2.0-cp36-cp36m-win_amd64.whl
# 实行以上命令会自动安装以来包
# 安装好后,测试效果,导入tensorflow库正常
python
import tensorflow as tf
hello = tf.constant('Hello Tensorflow!')
sess = tf.Session()
sess.run(hello)
# b'Hello, Tensorflow!'
sess.close()
exit()