本贴解决目的:Windows 7下通过anaconda安装tensorflow
今天说一下通过Anaconda安装tensorflow,并安装运行spyder编译器。网上很多教程不全,官网的也没有详细讲解,通过我的不断试错和寻找解决方案,给大家一个正确完整最新的教程。
先介绍下Anaconda和TensorFlow:
什么是 Anaconda?
Anaconda is the leading open data science platform powered by Python.
Anaconda 是一个由 Python 语言编写领先的开放数据科学平台
什么是 TensorFlow?
TensorFlow is an open source software library for numerical computation using data flow graphs.
TensorFlow是一个开源软件库,用于使用数据流图进行数值计算。
TensorFlow r0.12 及以后版本添加了对 windows 系统的支持,自此实现了三大平台,一套代码多平台运行。安装 TensorFlow 方式有很多种,下面使用 Anaconda 在 windows10 安装 TensorFlow (CPU版)。
在 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 寻找你与你电脑系统对应的版本,我这里使用 Anaconda3-4.2.0-Windows-x86_64.exe
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-4.2.0-Windows-x86_64.exe
下载并安装完成后,打开 CMD, 输入 'conda --version', 如果输出如下信息
conda 4.2.0
Anaconda 安装成功。
接下来需要设置 Anaconda 仓库镜像,因为默认连接的是国外镜像地址,下载速度比较慢,我们把镜像地址改为清华大学开源软件镜像站,打开 Anaconda Prompt, 输入:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
这种方法好像一般都不能成功,所以还有一种办法,我自己另外找到的一种办法。
解决方法:
1. 添加“清华镜像”渠道, 在Anaconda Prompt中执行:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
2. 删除配置文件中的 -default 行。(以防还不能成功,建议备份, 拷贝 C:\Users\用户名XXX\.condarc这个另存一份为 C:\Users\用户名XXX\.condarc.bak)
这是我的配置,删掉上面红框中的那行,在安装Tensorlow就可以成功了。
总的来说,Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择[1]。
在 Anaconda Prompt 窗口或者cmd下输入以下命令,去创建tensorflow的conda环境:
conda create -n tensorflow python=3.5
按回车。
表示创建 TensorFlow 依赖环境,TensorFlow 目前不支持Python3.6,这里我们使用Python3.5。
注意如果你上一步安装的是Anaconda2-4.x.x-Windows-x86_64.exe的anaconda,这里就不要通过命令:condacreate -n tensorflow python=3.5 去创建python3.0以上的环境了,亲身实测安装后会打不开anaconda navigator,而且使用spyder测试时老出错。可能是由于Anaconda2只支持python2.7的版本,对python3.0以上的支持不好,在这种情况下升级python3.0+的版本,可能会发生冲突。但Anaconda3本身就是支持python3.0+的版本的,所以可以放心的通过命令:condacreate -n tensorflow python=3.5 去创建对tensorflow支持良好的稳定的python3.5开发环境。如果打不开spyder或者Ipython,可以参考https://www.zhihu.com/question/48724738尝试修改,但最好还是安装Anaconda3。
继续看控制台输出:
Fetching package metadata ...............
Solving package specifications: .
Package plan for installation in environment D:\Program Files\anaconda\envs\tensorflow:
The following NEW packages will be INSTALLED:
pip: 9.0.1-py35_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
python: 3.5.3-0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
setuptools: 27.2.0-py35_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
vs2015_runtime: 14.0.25123-0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
wheel: 0.29.0-py35_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
Proceed ([y]/n)? y
提示我们安装哪些依赖软件,输入‘y’,回车。
控制台继续输出:
python-3.5.3-0 100% |###############################| Time: 0:00:42 754.91 kB/s
setuptools-27. 100% |###############################| Time: 0:00:00 1.92 MB/s
wheel-0.29.0-p 100% |###############################| Time: 0:00:00 2.68 MB/s
pip-9.0.1-py35 100% |###############################| Time: 0:00:00 2.31 MB/s
#
# To activate this environment, use:
# > activate tensorflow
#
# To deactivate this environment, use:
# > deactivate tensorflow
#
# * for power-users using bash, you must source
#
开始下载安装依赖软件,注意以下通过pip安装tensorflow的过程需要在tensorflow环境下,需要通过如下命令激活tensorflow环境
然后继续输入命令激活tensorflow这个环境:
接下来你可以选择安装CPU版本tensorflow,也可以安装GPU版本tensorflow。
先说CPU版本的tensorflow。输入以下命令:
GPU版本输入以下命令:
由于国外的镜像下载比较慢,所以我在这里使用的是清华大学镜像仓库,下载速度会比较快。
安装 CPU 版本:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/cpu/tensorflow-1.1.0-cp35-cp35m-win_amd64.whl
安装GPU版本:
pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simple https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/gpu/tensorflow_gpu-1.1.0-cp35-cp35m-win_amd64.whl
注意上面两条命令的输入都是在conda 的tensorflow环境下输入的,如何区分?就是窗口的命令前缀有个类似于:
这样的前缀的就可以了,这样我们后面的spyder等也将会在这个环境下安装运行。
如果控制台最终输出 如下信息表示安装成功。
你也可以打开 https://mirrors.tuna.tsinghua.edu.cn/tensorflow/ 选择合适的 whl 文件地址进行安装;或者打开https://mirrors.tuna.tsinghua.edu.cn/help/tensorflow/ 可视化选择 whl 版本。
Successfully installed numpy-1.12.1 protobuf-3.3.0 six-1.10.0 tensorflow-1.1.0 werkzeug-0.12.2
激活 TensorFlow 虚拟环境后,当不使用 TensorFlow 时,使用 deactivate tensorflow 关闭。
如果想安装其他版本Python(如python3.5.2)可以输入:
输入:Python,进入Python编程环境。然后输入:
正确的话,会输出:
更多用法学习,进入https://www.tensorflow.org/get_started/
默认情况下Anaconda已经安装了个Spyder,但是这个是在Anaconda下的,不是在TensorFlow环境下的版本,所以会导致无法引用tensorflow模块。
那么我们接下来进入到Anaconda Navigator下,去安装tensorflow下的Spyder。
默认这个tensorflow环境里是没有spyder的,我们可以在上面搜索spyder,然后安装即可。
我们搜索后,这里就有两个Spyder了。默认的Anaconda环境下是Spyder3,Tensorflow环境下的是Spyder2。
输入代码测试:
import tensorflow as tf
a= tf.constant(10)
b= tf.constant(26)
sess = tf.Session()
sess.run(a+b)
没有报错,正确在console输出:
那么,我们通过Anaconda在Windows下安装TensorFlow及Spyder编译器就成功了。
如果你想使用PyCharm,那么在PyCharm中设置解释器即Project Interpreter为虚拟env下的python.exe。即类似:E:\Anaconda\envs\tensorflow\python.exe
另外,如果在安装GPU版本的tensorflow时出现了问题,可以参考http://blog.csdn.net/sb19931201/article/details/53648615这篇文章。亲测,我遇到的问题,按照这篇博文的方式已经解决。
当我安装完成tensorflow-gpu和cuda,cudnn时,激活tensorflow-gpu环境,在命令行下输入python进入环境,输入import tensorflow as tf 就出现了一大堆错误。在安装cuda时也花费了点时间,一路上下载各种软件和补丁,又是允许加入环境变量,又是允许注册、更改的,以为在安装cuda时出错了呢。所以就查资料,了解到:TensorFlow 是一个编程系统, 使用图来表示计算任务,图必须在Session(会话)里被启动。Session将图的op(操作)分发到诸如CPU或GPU之类的设备上运行。所以,这个时候你运行python然后import tensorflow as tf
一般是不会报错的(我的在这里就报错了,但按照下面的步骤操作后成功运行起来gpu了),但是当你要执行tf.Session()
的时候可能就有问题了。这个时候将会调用cuda,我在这里遇到的问题是各种lib,dll加载不了。经过一番检查,定位到问题,cuda安装完成后默认的环境变量配置不对,CUDA_PATH是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
,但是这样不能直接访问到bin和lib\x64下的程序包,在path中加上这两个路径即可。
再发一波车,结果还有问题…还有一个库加载不了,就是上面的cuDnn库了,很简单,解压刚才下下来的安装包,将这三个文件夹(bin,include,lib)下的文件拷到CUDA对应的文件夹(bin,include,lib)下面即可。
这样就大功告成了。
(1).代码测试:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
(2).官方教程代码测试:
The TensorFlow implement
ation translates the graph definition into executable operations distributed across available compute resources, such as the CPU or one of your computer’s GPU cards. In general you do not have to specify CPUs or GPUs explicitly. TensorFlow uses your first GPU, if you have one, for as many operations as possible.
#Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
#Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
#Runs the op.
print sess.run(c)
输出:
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Tesla K40c, pci bus
id: 0000:05:00.0
b: /job:localhost/replica:0/task:0/gpu:0
a: /job:localhost/replica:0/task:0/gpu:0
MatMul: /job:localhost/replica:0/task:0/gpu:0
[[ 22. 28.]
[ 49. 64.]]
(2).example 测试
下载github上的tensorflow源码,里面有很多示例代码
run example:
python mnist_with_summaries.py
..............................
结果刚发车就熄火了…couldn't open CUDA library cupti64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cupti64_80.dll
查了一下,这个dll在NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\CUPTI\libx64
,因为这个也没添加到系统变量,简单的处理方式,把这里面的文件也拷到环境变量的bin文件夹下。
再次启动,终于愉快的run起来了。
最后想看看gpu情况,搜到了这个:NVIDIA System Management Interface
其实在安装路径下已经有了C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi
具体怎么操作,还在探索中…
参考文献:
[1]Anaconda使用总结[OL].2016.http://www.jianshu.com/p/2f3be7781451
[2]Installing TensorFlow on Windows[OL].2016.https://www.tensorflow.org/install/install_windows