TensorFlow2安装备忘

系统配置

Ubuntu18.04

Anaconda4.9.2

Cuda10.0+Cudnn7.6.5

CPU版本

执行pip install tensorflow默认安装的是CPU版本,并且安装后会有较多import依赖问题,部分记录如下,基本都属于"No module named xxxx"。

1.找不到wrapt

通过conda install wrapt解决该问题。

2.找不到GLIBCXX

问题描述:ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found

这个问题比较麻烦,看上去是C++库链接出错,好在找到一个比较完美的解决方案(https://zhuanlan.zhihu.com/p/615111375),主要步骤总结如下:

1)终端查看报错信息中的地址,确认是否缺失对应的GLIBCXX

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

 strings之后带的参数根据报错的具体信息调整(一般相差不大)。

2)查看当前系统中是否有较高版本的同类型文件

sudo find / -name "libstdc++.so.6*"

此命令需要sudo管理员权限,搜索结果也比较多,对于某个虚拟环境env_name,如果该环境中有较高版本的 libstdc++.so.6就能用,比如我的搜索结果中有/home/xxx/anaconda3/envs/env_name/lib/libstdc++.so.6.0.29(个人信息和环境名实际会有出入)。

3)对第2步中找到的libstdc++.so.6执行第1步的命令,查看其是否包含缺失的GLIBCXX版本

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29 | grep GLIBCXX

4)确认其包含GLIBCXX_3.4.29之后,用cp命令将其复制到/usr/lib/x86_64-linux-gnu中(注意两个路径之间的空格,权限不够加sudo)

cp /home/xxx/anaconda3/envs/env_name/lib/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu

5)最后更新libstdc++.so.6的链接,同样如果权限不够就加sudo

先删除/usr/lib/x86_64-linux-gnu中原有的libstdc++.so.6(保守起见我只是将其重命名):

rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6  # 删除
mv /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6-old  # 重命名

然后将复制的 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29链接为/usr/lib/x86_64-linux-gnu/libstdc++.so.6:

ln /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

链接效果如下: 

 可以看到保留的libstdc++.so.6-old连接到0.25版本的,因此缺少了GLIBCXX_3.4.29,0.29版本解决了这个问题。

3.找不到typing_extensions

当前环境中已安装4.5.0的typing_extensions,但依旧有ImportError,并且重装也没有解决。然后想到是不是版本太高,便去PyPI官网找一个稍低的版本,pip install typing_extensions==4.4.0之后问题解决。

4.找不到flatbuffers

参考typing_extensions的解决思路,同样到PyPI找了个较低版本重新安装,完美解决。

PS:如果遇到其他找不到依赖的问题,可以参考上面的解决办法,一般缺少的需要手动安装,已安装依旧报错可能要考虑版本匹配的问题。

GPU版本

失败安装记录

某个教程说cudatoolkit和cudnn可以用conda安装,但tensorflow必须用pip安装,于是创建conda虚拟环境后,先安装了cudatoolkit和cudnn:

conda install cudatoolkit=11.2 cudnn=8.1

 接着pip安装tensorflow的GPU版本(选的是2.8.0):

pip install tensorflow-gpu==2.8.0

通过终端查看可用设备:

# 终端启动python
>>>import tensorflow as tf
>>>tf.config.list_physical_devices()

 这次tensorflow的import没有问题了,但仍旧不可用GPU,理论上分开安装也许也是可以的,现在想可能是cuda相关的安装和系统实际不匹配(系统Cuda版本是10.0,,而上面安装的是11)导致的,后续通过conda成功安装的记录中,conda安装的也是和系统匹配的cudatoolkit和cudnn。

成功安装记录

尝试上面的一些方法之后,还是回到使用conda安装。

先是尝试conda install tensorflow-gpu=2.6.0,出现conda错误信息,提示找不到对应的package。

 根据提示去https://anaconda.org上搜索tensorflow-gpu,可以找到以下页面:

 也就是conda的channel有tensorflow-gpu,但2.6.0版本是Windows系统的,Linux系统有2.4.1版本,根据提示,直接执行conda install -c anaconda tensorflow-gpu,conda会自动安装与系统一致的cudatoolkit和cudnn,然后就能正常安装和使用GPU版本的tensorflow了。

之后顺便安装了一些会用到的库:

pip install pandas matplotlib notebook

安装了Jupyter Notebook(pip install notebook会自动安装ipykernel)之后,可以通过以下命令将虚拟环境env_name添加到notebook的kernel里:

python -m ipykernel install --user --name=env_name

执行以下命令可以看到jupyter notebook的kernel中已经成功添加该环境:

jupyter kernelspec list

jupyter kernelspec uninstall env_name  # 如果需要删除某个环境,用uninstall

这样就能在notebook里使用该环境配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值