最近在Windows10上安装了caffe和tensorflow,折腾了好久。在此记录一下。
安装caffe的过程已在另一篇博客中进行了记录,在此不再赘述。而tensorflow也是非常简单的,也不再详细说明。
安装caffe和tensorflow比较重要的一点是,要确保把依赖正确安装好。GPU版本的caffe需要7+版本的CUDA和5.5/5.0的CUDNN。而GPU版本的tensorflow在1.5.0以上的版本则需要CUDA9和CUDNN7。两个框架对CUDA和CUDNN的不同要求造成了小小的冲突。
caffe和tensorflow对python的版本也有要求,使用Anaconda管理python会比较方便,通过创建虚拟环境可以更改python的版本。
我先通过conda create -n tensorflow python=3.5命令创建了一个名为tensorflow的虚拟环境,在这个虚拟环境中的python版本为3.5。
因为caffe需要的CUDA和CUDNN的版本较低,所以需要先安装好低版本的CUDA和CUDNN,我安装的是CUDA8.0和CUDNN5.0,然后把caffe搭建好。
-
然后再安装高版本的CUDA和CUDNN,我安装的是CUDA9.0和CUDNN7.0,然后在tensorflow虚拟环境中通过pip install tensorflow-gpu命令安装tensorflow。不同版本的CUDA是可以共存的,因为不同程序可以链接不同版本的CUDA文件。通过pip install tensorflow-gpu命令安装tensorflow时,程序会自动安装最新版本的tensorflow,命令执行完毕后我电脑上会安装1.13版本的tensorflow-gpu,但是在python中import tensorflow是会发生如下错误:
Traceback (most recent call last):
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "D:\Anaconda3\envs\tensorflow\lib\imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "D:\Anaconda3\envs\tensorflow\lib\imp.py", line 343, in load_dynamic
return _load(spec)
ImportError: DLL load failed: 找不到指定的模块。During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "D:\Anaconda3\envs\tensorflow\lib\imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "D:\Anaconda3\envs\tensorflow\lib\imp.py", line 343, in load_dynamic
return _load(spec)
ImportError: DLL load failed: 找不到指定的模块找不到某些动态链接库
有网友说缺少VS的某些环境,需要安装这个组件:https://www.microsoft.com/en-us/download/details.aspx?id=53587
我没有采取这个解决方案,因为我有更新版本的这个组件,因为之前一直使用1.7版本的tensorflow,所以通过命令pip install tensorflow-gpu==1.7安装低版本的tensorflow,问题得到解决。