WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)

作为深度学习的小白一名,这段时间用到了TensorFlow中的目标检测API,尝试在windows下配置一下环境,遇到了各种坑,大部分坑都是版本问题,希望大家一定注意本文提到的版本,在此记下遇到的坑以及解决的办法。
电脑配置:WIN10_64位,4代i5,1060
时间:2018.12

  1. 安装anaconda

因为是小白,所以选择了安装anaconda来搭建python环境。TensorFlow目前只支持python3,所以在官网选择windows的python3版本。
WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)
在安装过程中有两点需要注意:第一个勾是是否把Anaconda加入环境变量,这涉及到能否直接在cmd中使用conda等命令,推荐勾选,如果不打勾也可以安装完成后手动添加;第二个是是否设置Anaconda所带的Python为系统默认的Python版本,如果电脑中没有装其他的python,建议勾选。

WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)

  1. 安装CUDA和cudnn
    本文配置的是TensorFlow_GPU的版本,需要CUDA和cudnn的支持,如果是配置CPU的版本,那么这一步可以省略。
    这里有一点特别坑的是,安装的CUDA版本,cudnn版本一定要和安装的TensorFlow-GPU的版本对应。我是安了又卸,卸了又安了至少四五遍才把版本对应起来。
    亲测能用的版本对应是:Python3.5—TensorFlow-GPU1.9.0–CUDA9—cudnn7.4
    (之前也试过其他可以匹配的版本,但是因为本文需要配置ObjectDetection的API,这个需要至少TensorFlow1.9.0版本以上,所以选择TensorFlow-GPU1.9.0)
    CUDA官网选择我们需要的版本。选择之后默认的download下载的是CUDA10,需要选择legacy releases选择CUDA9。还有一点需要注意的是,下载之前一定要确认你的显卡是否支持CUDA9。
    WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)
    WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)
    WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)
    下载后需要经过漫长的安装过程,这个跟其他的安装没什么太大区别,安装过程可能出现屏幕闪烁。
    安装完CUDA后,接下来安装cudnn。在官网选择我们需要的7.4版本。
    WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)
    WIN10配置tensorflow_GPU+ObjectDetection_API(防坑指南)
    需要注册账号登录后才可以下载。下载后是一个压缩包,解压压缩包后,分别将三个文件夹里的文件,分别复制到CUDA安装路径下对应的文件夹里。注意不要整个文件夹复制替换,要分别复制文件夹里的文件到对应的文件夹下。复制好后,还需要添加cudnn的bin文件夹到系统的环境变量中。
  2. 安装TensorFlow
    打开cmd命令行,注意以管理员身份运行,本文所有的在cmd命令行下执行的指令都是在管理员身份运行的前提下,否则有些指令会报错。
    创建TensorFlow环境
conda create -n tensorflow python=3.5 

网上有人说TensorFlow对python3.6的版本也支持了,可是我创建的python3.6环境下安装TensorFlow会出现错误导致不成功,所以在此选择python3.5的版本。-n 后面的tensorflow是创建环境的名字,可以随意起。
创建后**tensorflow环境

activate tensorflow

然后开始安装tensorflow,如果需要安装cpu版本,把-gpu去掉就行。

pip install --ignore-installed --upgrade tensorflow-gpu==1.9.0

测试tensorflow是否安装成功。在cmd-tensorflow环境下输入python进入python,依次输入如下指令,如果没有报错就证明安装成功了。

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
  1. 安装ObjectDetection_API