Press "Enter" to skip to content

GPU运行Tensorflow详细教程及错误解决

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

 

GPU运行Tensorflow详细教程及错误解决

 

前提条件

 

最重要的一点:CUDA与tensorflow的版本一点要对应,不然用不了!

 

首先在系统搜索NVIDIA进入该控制面板,查看驱动版本

 

 

进入该网站可以查看自己系统驱动版本所支持的CUDA版本 docs.nvidia.com/cuda/cuda-t…

 

之后进入官网下载CUDA与CUDnn(这两个是配套的,都要安装CUDNN下载回比较麻烦,需要注册)

 

CUDA官网下载地址: developer.nvidia.com/cuda-toolki…

 

CUDNN官网下载地址: developer.nvidia.com/rdp/cudnn-a…

 

下载后安装CUDA,需要注意第一个安装界面出现的文件路径是解压路径(如下图),这个不用改,安装结束后系统会自动删除

 

 

而文件真正的安装路径在我们后续选择安装的项目才出现(这时一般会弹出三个路径,可以改也可以不改,我个人是把它改了,改完后要记住这个路径,后续可能会用到),到选择安装那一步时只需要选择CUDA这个选项即可,其他都不用选。

 

安装完毕后解压下载的CUDNN,里面会有以下几个文件

 

 

复制这几个文件,直接粘贴到CUDA的安装文件夹下,粘贴时系统提示有重复文件就直接选择替换文件

 

 

然后在命令行输入nvcc -V,有出现以下的版本信息就OK了,若没有出现则是环境变量没有配置好

 

 

若系统没有知道配置好则需要手动配置,在系统环境变量PATH添加以下几个,其中画黄线的部分就是刚刚CUDA的安装路径(系统默认的安装路径为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA)

 

 

配置完成后在运行nvcc -V就发现可以了

 

接着打开命令行,若下载cpu版本则输入:pip inatall tensorflow

 

gpu版本则输入:pip install tensorflow-gpu

 

等待安装完毕后在命令行输入python,接着输入import tensorflow,系统出现下图中的这行文字未报错,或是什幺提示都没有就说明安装成功了。

 

 

配置GPU运行

 

在运行的代码前面加上以下代码

 

import os
os.environ["CUDA_DEVICES_ORDER"] = "PCI_BUS_IS"
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
#这里0表示第0块GPU,看个人情况分配

 

若在终端与运行可以打开文件所在路径然后输入以下代码运行

 

CUDA_VISIBLE_DEVICES=1,2  python XXX.py
#这里的XXX是文件名,要根据自己的文件名进行修改

 

确认是否成功配置

 

1.打开python编译器,或者命令行输入python,然后输入以下代码

 

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

 

系统既有CPU又有GPU信息说明配置成功。

 

 

打开命令行输入nvidia-smi命令就可以查看当前CPU与GPU信息了,一般在运行过程中我们会输入nvidia-smi –l命令让其默认没5秒刷新一次,查看程序运行过程中系统的变化(可按Ctrl+C停止)。

 

 

其他命令:nvidia-smi –l xxx(指定刷新频率,单位为S)

 

nvidia-smi –f xxx(将查询的信息输出到具体的文件中,不在终端显示)

 

查看python路径:where python

 

查看python版本:python -V 或 python –version

 

查看tensorflow版本与路径:

 

import tensorflow as tf
print(tf.__version__)
print(tf.__path__)

 

出现的错误及解决方案

 

1.仍然运行很慢,仔细检查会发现在运行窗口中有如下错误:

 

tensorflow-keras: Layer lstm will not use cuDNN kernel since it doesn‘t meet the cuDNN kern

这是由于不符合LSTM网络的gpu运行规范所导致的,基础题规范见下图

由于其中大多数参数不填默认为标准值,只有recurrent_activation与activation参数经常会被修改,因此我们要将代码中的LSTM网络这些参数进行修改或直接删除,如下,只保留输出维度与激活函数,这样就不会报错了,可以正常GPU运行了。

 

tf.keras.layers.LSTM(16,recurrent_activation='sigmoid')

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。