使用Tensorflow中遇到的问题
使用Tensorflow中遇到的问题

使用Tensorflow中遇到的问题

首先是GPU版本的安装问题,这个问题比较复杂,既跟python版本有关系,也跟系统平台有关系,最好的解决方法是用conda重新安装

conda create -n tf_gpu tensorflow-gpu

conda会自动处理各种依赖关系,省去了很多烦恼

二是导入tensorflow报错:module ‘numpy’ has no attribute ‘str’.

解决方案是降级: pip install numpy==1.23.4

还有问题是: module ‘tensorflow.keras.layers’ has no attribute ‘Rescaling’

这是由于tensorflow版本的问题,一个api方法写法变了,新版的如下:

layers.experimental.preprocessing.Rescaling

以后怎么改还不知道,当前是1.26.0版本

还有问题: No module named ‘tensorflow.python.trackable’

这个问题可以下载tensorflow源码,里面有trackable文件夹

还有问题:无法导入keras

这个问题也很恶心,参考https://stackoverflow.com/questions/73270410/modulenotfounderror-no-module-named-tensorflow-python-trackable

经过仔细检查和文档校对,有以下几点是安装过程中新弄明白的:

  1. tensorflow在windows下从2.11开始不再支持gpu构建,这个在configure.py文件中有说明

2. gpu版本与cuda版本有对应关系,否则,即便安装了gpu版本的tensorflow,也无法调用gpu,对应关系也并非一一对应,有一个大致范围,英文版文档比中文版文档更加新,里面有写最新的2.16.1,Build from source on Windows  |  TensorFlow (google.cn)

3. windows下用gpu版本的tensorflow,官网说的最简单的办法是用docker,测试下来,其实也很麻烦,首先是安装wsl,然后安装docker-desk,然后再设置绑定wsl,接着要安装wsl版本的cuda以及cudnn,然后再拉取对应版本的tensorflow,然后运行,所有这一切做完了,以为大功告成了。结果还是不支持。应该还是版本问题,但是很明显,这样操作太麻烦了。

我的方案是用tensorflow-gpu==2.10.0,这是最后一个支持gpu的windows单独编译版本,官网上对应的cuda是11.2,实测11.7也是没有问题,cuDNN官网是8.1,实测8.8也是没有问题。最终不懈努力,终于识别了GPU。

4. keras官网上写道:From TensorFlow 2.0 to 2.15,doing pip install tensorflow will also install the corresponding version of Keras2. Tensorflow 2.16,将会自动安装Keras 3.