前言:要有版本意识
在我个人的多次配置环境过程中,很多时候失败或者后序出现问题,往往都是版本不匹配的问题。所以在本次安装中,提前重点了解了下版本匹配情况。各位千万不要跳过这部分,因为这不仅是基础知识了解的过程,也很可能帮我们后期省略很多麻烦,所谓磨刀不误砍柴工,大抵就是如此。
我们常见有两种了解方式:
第一种,官网查看:
例如:在TensorFlow官网的安装目录下,就列举了很多环境配置情况:
链接网址如下:TensorFlow在window下的配置
我们直接从官网上看版本配置即可。
第二种方法是使用conda命令查询:
例如,我发现官网那里没有cudatoolkit的版本,一般还是建议安装cudatoolkit的,我们使用命令:conda search cudatoolkit --info
就会看到cudatoolkit的版本
我们可以继续下拉查看:
发现后面版本都有constraints - _cuda>=xx.x版本的信息,所以我们通过这种命令,大概就能了解我们需要安装什么样的cudatoolkit包。
再举个例子:
我之前说我本地的cuda是12.0,而官网安装配置里面最高cuda版本是11.2。一般来说cuda是新的话,加上python是3.8,我们都可以直接默认下载安装最新的cudatoolkit,cudnn等包。不过我们可以看看cudnn版本:
命令:conda search cudnn --info
继续下拉:
我们发现不仅有相关依赖的cudatoolkit版本,也有cuda版本。所以说通过查看命令,我们就能通过自己的cuda版本,便能查找到需要配置的其他包的版本。将我们出现包版本不匹配的问题降低。
1.查看自身电脑显卡的cuda版本
命令:nvidia-smi
由于我的cuda是12.0,算很新的那种,然后python版本是3.8,即python也不是老版本。所以后序的配置一般默认即可,毕竟默认通常都是下载最新的包版本。不过,我通过上面例举的命令查看cudnn后,发现最新的cudnn版本都是基于cuda12.0的,这样我使用默认安装就更放心了。cudatoolkit等也是同理。
2.conda创建一个专门给keras用的环境
conda的好处是可以创建多个虚拟环境,进行隔离。毕竟谁也不想自己的环境里面乱糟糟的,可能还会有很多冲突问题。
在base环境下创建一个环境,格式如下:conda create -n 环境名称 python=版本
使用conda activatet 环境名称
激活
2.下载cudatoolkit,cudann包
注意使用镜像,往往会快点,不使用镜像可能会下载失败或者很慢。
格式如下:
conda install cudatoolkit=xx.x -c https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/win-64/conda install cudnn=xx.x -c https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/win-64/
3.安装TensorFlow
命令:pip install tensorflow_gpu==x.x.x -i https://pypi.tuna.tsinghua.edu.cn/simple/
TensorFlow有查看信息的命令,不过查看出来的内容很复杂,不如官网直接,
查看信息:
anaconda search -t conda tensorflow
4.安装keras
注意,TensorFlow2.0以上版本内置的keras,所以TensorFlow2.0以上版本的可以不用安装keras
安装keras:pip install Keras==x.x.x
5.安装jupyter
命令:conda install jupyter
`
6.添加kernel
命令:
conda install -c anaconda ipykernelpython -m ipykernel install --user --name=kerasgpu --display-name kerasgpu
#格式含义:
#python -m ipykernel install --user --name=内核真名 --display-name 在内核选择时显示的内核假名
启动jupyter命令:jupyter notebook #启动jupyter
启动后
7.其他
验证是否可以使用gpu:
import tensorflow as tf
tf.test.is_gpu_available()
出现True即可。
由于后期该命令可能弃用,所以新命令:
import tensorflow as tf
tf.config.list_physical_devices('GPU')
出现device_type='GPU’即可
查看已经安装的包和版本命令,该命令非常有用,尤其是出现版本冲突的时候:
conda list
解决conda环境安装包报错:The following packages are not available from current channels
8.后记
在启动jupyter notebook后运行出现一些问题:
1.TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1.Downgrade the protobuf package to 3.20.x or lower.
2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
该问题解决方法,已经在描述问题给出了。降低protobuf版本到3.19.0及以上。
你可以使用conda list
查看当前环境下的包以及版本,找到protobuf的,我当时是5.xx.x版本,然后
卸载pip uninstall protobuf
再安装:pip install protobuf==3.19.0
不过此时又出现error,说要求3.19.6及以上版本,那就修改一下版本就行
2.ImportError: cannot import name ‘dtensor’ from ‘tensorflow.compat.v2.experimental’ (E:\condaenvs\kerasgpu\lib\site-packages\tensorflow_api\v2\compat\v2\experimental_init_.py)
这是再次启动jupyter后出现的。这个问题是keras和TensorFlow版本不匹配导致的。我之前说TensorFlow2.0以上版本内置keras,但是貌似内置的也会出现不匹配问题。
可以使用conda list
命令查询下包和版本,例如我查看到自己的TensorFlow是2.6.0,但是keras是2.15.0版本,所以keras版本太高了。
命令:pip uninstall keras
卸载pip install keras==版本号
这里安装的版本和TensorFlow的版本一样即可
3.Kernel Restarting The kernel for xxx appears to have died. It will restart automatically或者是Could not locate zlibwapi.dll. Please make sure it is in your library path
参考我写的这个博客:Kernel Restarting The kernel for xxx appears to have died. It will restart automatically