大家都知道,如若Tenforflow 2.0.0与Tensorflow 1.14共存,自然需要通过virtualenv创建新的环境来完成,但是安装过程中的细节还是需要整理的
0. CUDA版本选择
为了使Tensorflow 1.14与Tensorflow 2共存,我们需要先安装CUDA以及对应CuDNN,具体参考官方网页:Install TensorFlow with pip
我安装的CUDA版本为:cuda_10.0.130_411.31_win10
对应的CuDNN版本:cudnn-10.0-windows10-x64-v7.5.0.56
安装CUDA之前,可以把自己本机的显卡驱动先卸载干净,反正CUDA安装包包含显卡自身驱动程序,为了学习AI,降级显卡驱动也在所不惜。。。
安装CUDA前,记得选择Custom,即自定义安装,并且将Visual Studio Integration选项去除,大部分安装失败是因为默认勾选了这个。
0.1 显卡驱动选择
如果确定使用CUDA 10.0,那么现在最新的显卡驱动应该是使用CUDA10.1,而且如果安装的是OEM操作系统,Windows Driver Type还需要选择为DCH,否则标准的驱动程序也安装不上去,所以需要自定义从英伟达官网找到适合自己的那一款驱动,并且需要浏览驱动介绍,选择CUDA10.0的驱动版本
显卡驱动高级搜索网址:NVIDIA Driver Downloads


安装正确的驱动之后,即可通过nvidia-smi命令查看GPU使用情况了(如图,第一部分显示GPU异常,需要重新安装驱动才行):

0.2 设置python安装包的镜像地址
设置安装镜像地址,就是为了快
在自己用户文件夹,创建一个pip目录,并且在目录下创建一个pip.ini文件,如C:\Users\xxx\pip,其中xxx用自己登录系统的用户名替代,pip.ini的内容:
[global]
index-url = http://pypi.douban.com/simple/
trusted-host = pypi.douban.com
如此,即可使用镜像地址安装python包,相比不加镜像地址的安装速度,至少提升十倍以上
1. Tensorflow版本的选择
一般来说,因为大部分开发生产环境还是使用1.x版本的tensorflow,所以主环境安装tensorflow-gpu 1.14 版本,虚拟环境安装tensorflow-gpu 2.0.0版本
为了让两个版本的tensorflow共存,一定先了解各自支持的CUDA版本,比如2.1.0是支持CUDA10.1的,于是虚拟环境只能降级安装2.0.0: pip install tensorflow-gpu==2.0.0

1.1 Tensorflow安装的命令行
因为现在默认的pip install tensorflow,是默认安装最新版本的tensorflow 2.1.0,所以在主环境下,需要指定安装的版本号:
pip install tensorflow-gpu==1.14

2. VC++版本选择
对于Tensorflow 1.14来说,系统中安装VC++ 2015版本即可,但是Tensorflow 2.0.0就需要安装更高版本的VC++,干脆我们选择对应VS2019的VC++版本
The latest supported Visual C++ downloads

3. 虚拟环境配置
控制台中敲入如下命令:
virtualenv tensorflow2
cd tensorflow2\Scripts
activate.bat
pip install numpy
pip install scikit-learn
...
即做好前置安装工作
假定我们已经进入虚拟环境,开始安装tensorlfow-gpu 2.0.0版本:
pip install tensorflow-gpu==2.0.0
虚拟环境的tensorflow安装记录如下:

尝试import tensorflow

4. Jupyter Notebook设置
在主环境安装jupyter notebook以及相关的插件组件,ipykernel以及jupytext
pip install jupyter
pip install jupyter_contrib_nbextensions
pip install ipykernel
pip install jupytext

然后通过如下命令,获取主环境中的jupyter的kernel:
jupyter kernelspec list

如图,我是已经有了两个环境的,但是默认情况下是只有一个的。
我们可以按照路径:c:\python36\share\jupyter\kernels,打开对应文件夹,创建一个tensorflow2文件夹,然后把c:\python36\share\jupyter\kernels\python3的文件都拷贝过去,

然后修改kernel.json文件(json文件特殊符号需要转义符,所以路径斜杠使用\):
{
"argv": [
"C:\\tensorflow2\\Scripts\\python.exe",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "tensorflow2",
"language": "python"
}
然后我们还需要在tensorflow2.0的虚拟环境,安装ipykernel组件,这样才能在主环境中完成python核心的切换
5. jupyter notebook实际操作
在主环境,使用jupyter notebook命令,打开notebook

然后打开使用tensorflow2.0写的python脚本,并且切换核心到tensorflow2:

此时进行模型训练,即可从jupyter notebook的控制台看到GPU调用的信息:



然后我们尝试打开之前写的应用Tensorflow 1.x的神经网络课件:

训练起来还是很顺畅的,也很好用到了GPU,

但是需要注意的是,jupyter notebook如果训练之后,不及时关闭,占用显存不会及时释放,记得及时释放显存,否则会经常遇到out of memory的异常:

6. 尾声
机器学习环境搭建,一直是比较头疼的事情,搭建成功与否与组件版本,显卡驱动版本,CUDA版本,系统是否安装VC++环境,以及VC++环境版本是否正确等等有关,希望此文能够帮到希望通过多个视角学习机器学习以及神经网络的同学哈~~~
网友评论