TensorFlow2安装备忘

news2024/11/26 2:32:37

系统配置

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里使用该环境配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【23】SCI易中期刊推荐——神经网络科学及机器人学(中科院3区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

面试官:useEffect和useLayoutEffect有什么区别?

您好&#xff0c;如果喜欢我的文章&#xff0c;可以关注我的公众号「量子前端」&#xff0c;将不定期关注推送前端好文~ Effect数据结构 顾名思义&#xff0c;React底层在函数式组件的Fiber节点设计中带入了hooks链表的概念&#xff08;memorizedState&#xff09;&#xff0…

博弈论——巴什博弈(C++)

博弈论&#xff08;C&#xff09; 前言例题&#xff1a;拍卖会题目描述输入输出格式输入格式&#xff1a;输出格式&#xff1a; 输入输出样例输入样例#1&#xff1a;输出样例#1&#xff1a; 例题的解&#xff1a;巴什博奕&#xff08;Bash Game&#xff09;&#xff1a;代码&am…

CEPH部署

//存储类型 块存储 一对一&#xff0c;只能被一个主机挂载使用&#xff0c;数据以块为单位进行存储&#xff0c;典型代表&#xff1a;硬盘 文件存储 一对多&#xff0c;能被多个主机同时挂载使用&#xff0c;数据以文件的形式存储的&#xff08;元数据和实际数据是分开存储…

【30】核心易中期刊推荐——人工智能图像处理

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

javascript基础二十三:说说 JavaScript 中内存泄漏的几种情况

一、是什么 内存泄漏&#xff08;Memory leak&#xff09;是在计算机科学中&#xff0c;由于疏忽或错误造成程序未能释放已经不再使用的内存 并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;导致在释放该段内存之前就失…

【数学建模】期末样题(2021年真题)

一、&#xff08;10分&#xff09;某乳制品厂计划生产A、B、C三种酸奶。已知生产单位重量的A需要加工设备3小时&#xff0c;原料甲1千克&#xff0c;原料乙0.2千克&#xff1b;生产单位重量的B需要加工设备5小时&#xff0c;原料甲1千克&#xff0c;原料乙0.3千克&#xff1b;生…

若依之权限处理

若依之权限处理 若依前后端不分离版本使用的是shiro进行权限控制&#xff0c;本文主要是对shiro在若依中的使用进行分析。 RBAC权限模型 RBAC是指基于角色的访问控制。其基本思想是&#xff0c;对系统的各种权限不是直接授予具体的用户&#xff0c;而是在用户集合与权限集合…

【论文总结】Drifuzz: Harvesting Bugs in Device Drivers from Golden Seeds

Drifuzz:从金种子中收获设备驱动程序中的漏洞 摘要: 现代计算机中的外围硬件通常被认为是安全的且不带恶意&#xff0c;并且设备驱动程序以信任从硬件输入的方式实现。然而&#xff0c;最近的漏洞攻击&#xff08;如Broadpwn&#xff09;已经证明攻击者可以通过易受攻击的外围…

Map复习(JDK1.8)

首先考虑的问题任然是高并发的安全问题&#xff1a; HashMap是一个不安全的&#xff0c;多线程会导致数据不一致。 Hashtable是安全的&#xff0c;但是速度比较慢&#xff0c;只要是安全的就是一性能为代价换来的&#xff0c;加锁开锁需要时间&#xff0c;加锁是只能一个线程访…

服务注册与发现总结

文章目录 概要一、服务注册与发现技术要点1.1、服务注册/下线1.1.1、代理注册1.1.2、客户端注册 1.2、健康检查&#xff08;续约&#xff09;1.2.1、主动检测1.2.2、被动检测 1.3、服务发现1.3.1、代理发现1.3.2、客户端发现 1.4、服务变更通知1.4.1、主动通知1.4.2、被动通知 …

linux系统vim编辑器的使用

前言&#xff1a; 前面我们就说过在linux系统下一切都是文件&#xff0c;也可以说在日常使用linux系统过程中使用频率最高工具&#xff0c;基本没有之一&#xff0c;今天就来详情介绍一下我们在日常使用vim编辑器的过程中一些常见的指令&#xff0c;博主始终遵循好记心不如烂笔…

Excel排序

Excel排序 写在前面&#xff1a; Excel是我们最常用的办公工具之一&#xff0c;其中排序是最基础和最重要的一项&#xff0c;如下介绍了两种排序方式&#xff0c;有需要者可以参照这些步骤完成相关任务~ 一、排序方法1 使用Excel自带的排序功能&#xff0c;具体步骤如下&…

pandas菜鸟速学-series

一、pandas是什么 一个基于numpy的数据处理数据分析的工具。 特点&#xff1a; Pandas 的主要数据结构是 Series &#xff08;一维数据&#xff09;与 DataFrame&#xff08;二维数据&#xff09;&#xff0c;这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大…

重学SSE

概述 SSE&#xff08;Server-Sent Events&#xff09;是一种用于实现服务器主动向客户端推送数据的技术&#xff0c;也被称为“事件流”&#xff08;Event Stream&#xff09;。它基于 HTTP 协议&#xff0c;利用了其长连接特性&#xff0c;在客户端与服务器之间建立一条持久化…

暴力递归到动态规划(一)

⭐️前言⭐️ 动态规划是一个很难的模块&#xff0c;如果一道动态规划的题目直接去推出动态转移方程来解题&#xff0c;是很难的&#xff0c;所以应该先想出暴力解决的方法&#xff0c;再去用空间换时间优化&#xff0c;得出动态规划的解法。 &#x1f349;欢迎点赞 &#x1f…

【Java设计模式】—— 享元模式概述和示例

目录 概述享元模式的定义与特点享元模式的结构与实现1. 模式的结构2. 模式的理论实现 享元模式的应用实例代码实现 享元模式的应用场景享元模式的在实际工作中的应用参考文献 概述 在面向对象程序设计过程中&#xff0c;有时会面临要创建大量相同或相似对象实例的问题。创建那…

Linux命令学习之mkdir、rmdir和rm

这篇文章想要学习一下目录的创建&#xff08;mkdir&#xff09;、空目录的删除&#xff08;rmdir&#xff09;、非空目录的删除&#xff08;rm&#xff09;。 mkdir mkdir是新建目录的命令。man mkdir看一下mkdir的使用说明。 按q键退出帮助说明。 mkdir /learnwell在根目录…

贷款业务-贷款模式

参考文章 多流量模式下的系统设计- 呱说产品自营 互联网金融之信贷三部曲&#xff1a;贷中 导读 互联网的玩法&#xff0c;基本都是流量为王。网上也有种说法&#xff0c;互联网平台&#xff0c;最终都会走上金融业务&#xff0c;一般都是指贷款业务。 但是&#xff0c;做…

PLC信号发生器(博途SCL)

信号发生器的应用请参看下面的博客文章,在演示分析滤波器的作用时,我们需要对信号进行叠加处理。 博途PLC滤波指令 Filter_PT1、Filter_PT2、Filter_DT1详细使用说明(含Simulink+博途PLC仿真)_RXXW_Dor的博客-CSDN博客博途S7-1200/1500PLC的PID控制和详细使用说明,请参看…