初学DeepLearning,看到TensorFlow和pytorch框架用户数和讨论数比较多,最后选择上手TensorFlow2.0版本。因为搜索了一圈总结:TensorFlow用户基数还是比较大;2.0版本也改进了1.0版本代码编写、调试困难和API混乱等缺点,使其也有了pytorch好上手的优点。
TensorFlow有cpu和gpu两个版本,gpu可以并行处理,因此gpu版本运行起来更快,但需要有NVIDIA显卡,且显卡算力有一定要求。我的笔记本显卡是:NVIDIA GeForce MX250。以下是在win10安装TensorFlow2.0-gpu的步骤
1、安装之前需要有anaconda,这个我之前装了就不写了;
我的MX250在官网没查到,百度了一下说满足要求,就继续安装了。最后我安装完成测试时看到了我的显卡算力是6.1
2、pip安装TensorFlow-gpu
用阿里云的镜像源下载安装:cmd执行:
pip install --default-timeout=100 --ignore-installed --upgrade tensorflow-gpu -i https://mirrors.aliyun.com/pypi/simple/
3查看CUDA、cuDNN要下载的版本
我的python版本是Python 3.7.6,可以安装2.0版本,另外需要安装cuDNN7.4,CUDA10,中间的编译器和构建工具不知道是什么没理,最后也不影响。
#python版本查询:python -V
#python安装路径:where ipython
4、下载对应版本的CUDA,我下载的是10.2版本,安装过程就是一直点点点,如果你不放心的话可以找别的资料参照下具体过程。另外,我搜到有人装的10.0版本的,不知道区别大不大。我选择的是默认安装路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
5、下载对应版本的cuDNN,我下载的是cudnn-10.2-windows10-x64-v8.0.2.39.zip。这里我下错了,导致后面运行时候有点小问题(具体下面说),我下成8.0版本了。下载前需要进行注册账户和填写问卷。
我只看到“for CUDA 10.2”就下了,其他历史版本在Archived cuDNN Releases里可以找到。下载得到的压缩包,就地解压后将里面的bin、include、lib里边的文件放到CUDA的对应文件夹下(我的是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2)。
6、添加环境变量:电脑 -> 右键 属性 -> 高级系统设置 -> 环境变量 -> 系统变量里找到Path -> 编辑 -> 新建,将以下4个分别加上去。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include
7、测试:
一、cmd中测试:
activate tensorflow
ipython
import tensorflow as tf //结果不报错即正常
tf.test.is_gpu_available() //最后结果显示True即gpu可以使用
二、pycharm中测试:
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()来启用1.x版本的代码编写方式,这就是2.x想解决的一个TensorFlow缺点,直接用以下代码即可:
1 import tensorflow as tf
2
3 a = tf.constant(1.)
4 b = tf.constant(2.)
5 c = tf.add(a,b)
6
7 print(float(c))
1 import tensorflow as tf
2 import timeit
3
4 with tf.device('/cpu:0'):
5 cpu_a = tf.random.normal([10000, 1000])
6 cpu_b = tf.random.normal([1000, 2000])
7 print(cpu_a.device, cpu_b.device)
8
9 with tf.device('/gpu:0'):
10 gpu_a = tf.random.normal([10000, 1000])
11 gpu_b = tf.random.normal([1000, 2000])
12 print(gpu_a.device, gpu_b.device)
13
14 def cpu_run():
15 with tf.device('/cpu:0'):
16 c = tf.matmul(cpu_a, cpu_b)
17 return c
18
19 def gpu_run():
20 with tf.device('/gpu:0'):
21 c = tf.matmul(gpu_a, gpu_b)
22 return c
23
24
25 cpu_time = timeit.timeit(cpu_run, number=10)
26 gpu_time = timeit.timeit(gpu_run, number=10)
27 print('warmup:', cpu_time, gpu_time)
28
29
30 cpu_time = timeit.timeit(cpu_run, number=10)
31 gpu_time = timeit.timeit(gpu_run, number=10)
32 print('run time:', cpu_time, gpu_time)
输出结果:
8、测试时遇到的问题:
Could not load dynamic library ‘cudart64_101.dll’; dlerror: cudart64_101.dll not found,还有个是没找到cudart64_7什么的文件
解决:在CUDA安装路径下(我的是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2)搜索缺失的dll文件,将搜到的cudart64_102.dll改为cudart64_101.dll,另一个cudart64_7的也同理。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删