以前为了论文的实验做了一个tf1的项目,最近实验室统一更换了RTX3080显卡,想调用起来跑我以前的项目,遇到了很多坑,记录一下。
一、环境配置
CUDA11.1.0 + cuDNN8.0.4 + python3.6.9 + tf_nightly_gpu-2.5.0
①cuda和cudnn的安装这里就不再讲解了,网上教程很多,需要注意一下的是可能需要CUDART64_101.DLL这个文件,没有的话可以在下面这个网址下载,复制进cuda/v11.1/bin目录下即可
Search result for cudart64_101.dllwww.dll-files.com
② tf_nightly_gpu-2.5.0最好去pypi上下载,使用清华镜像下载的并不是最新版本,可能会有问题,下载地址如下:
(pip慢的要死,我选择离线安装)
安装完成后进入python环境,输入:
import tensorflow as tf
print('GPU',tf.test.is_gpu_available())
打印GPU True即安装成功
二、tensorflow1.x代码转tensorflow2.x代码
由于在tf2中有一些tf1的模块被废弃,虽然有很多可以一键转换的代码,但是被废弃的模块显然是无法使用的,所以需要手动修改。
我的项目里使用到了tf1的contrib模块,原始代码为from tensorflow.contrib import slim,这个模块现在已经不再使用了,但是有独立的安装,我们可以使用
pip install tf_slim
安装slim库,代码修改为import tf_slim as slim
其他的调用就好办了,tf2官方都给出了相应的解决方案,例如:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
https://www.tensorflow.org/guide/migratewww.tensorflow.org
一一对照修改即可
实现!
参考:https://zhuanlan.zhihu.com/p/340447864
https://blog.csdn.net/sinat_29957455/article/details/106440230