解决Tensorflow不能用GPU加速问题

该博客详细记录了解决Tensorflow在使用GPU加速时遇到的问题,包括缺少cuda库、cudnn库的安装以及针对LSTM和GRU层无法使用cuDNN优化的解决办法。通过conda安装相应版本的cuda和cudnn后,解决了动态库加载错误。然而,发现LSTM和GRU仍无法利用cuDNN加速,原因是cudnn对这些层的参数有特定要求。经过尝试,发现需要设置gru的reset_after参数为TRUE,并确保其他激活函数和dropout值满足条件,才能正常使用GPU加速。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用tensorflow_gpu运行代码出错

tensorflow_gpu版本是2.3.1

通过nvidia-smi发现确实是安装了cuda的。

下面就一步一步找问题

第一个错误:

tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library ‘libcudart.so.10.1’; dlerror: libcudart.so.10.1: cannot open shared object file: No such file or directory
2021-11-28 20:16:36.866427: I

解决方法:

conda install cudatoolkit=10.1

然后就会出现:
I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
证明这个问题ok了

第二个错误:

Could not load dynamic library ‘libcudnn.so.7’; dlerror: libcudnn.so.7: cannot open shared object file: No such file or directory;

解决方法:

conda install -c anaconda cudnn

然后就没有这个错误了
就在我以为一起都OK的时候,突然发现,又又又报错了
居然lstm和GRU不能用

第三个错误:

WARNING:tensorflow:Layer lstm will not use cuDNN kernel since it doesn’t meet the cuDNN kernel criteria. It will use generic GPU kernel as fallback when running on GPU

后来也是在CSDN上搜到的解决方法,原来是cudnn对lstm和gru的参数是有要求的。具体如下在这里插入图片描述

而对于GRU是这样的:

在这里插入图片描述
注意gru额外还要加一条命令:

  reset_after = TRUE,

这里其他网友说的是:尽管官网上说要满足 recurrent_activation = ‘sigmoid’, activation == tanh , recurrent_dropout == 0,但其实只有第一条就可以了。 但是我这边确不行。必须要这几条都写上才可以用!!

后面的lstm、gru参考了这篇文章:

[1] https://blog.csdn.net/weixin_45865390/article/details/109305744

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值