Linux/CentOS编译TensorFlow

很多时候为了方便图省事,是通过pip安装TensorFlow的,然而很不幸运行的服务器不支持AVX指令,引入模块的时候会报错:

The TensorFlow library was compiled to use AVX instructions, but these aren’t available on your machine.

这种时候没办法了,需要自己编译了。编译必须Bazel,而Bazel推荐用Bazelisk安装。

安装Bazelisk

前往Bazelisk,下载最新可执行文件:在这里插入图片描述
上传bazelisk-linux-amd64/usr/local/bin下。改名bazel,赋予执行权限:

chmod +x bazel

之后确保将bazel加入到PATH中。

安装Python

确保安装了正确版本的Python,并且安装了开发包(本例TensorFlow 2.11.0对应Python版本是3.9.13):

# 检查Python版本
python -version
# 检查是否安装了开发包(重要!你也不想编译一个多小时突然报错找不到Python文件吧)
find / -name Python.h 2>/dev/null
# 安装开发包
sudo yum install python3-devel

配置环境变量:

# 根据实际修改,该目录下需要包含Python.h
export PYTHON_INCLUDE_PATH=/usr/include/python3.9

安装依赖

pip install -U --user pip numpy wheel
pip install -U --user keras_preprocessing --no-deps

这些依赖的版本与TensorFlow的版本有关。
以TensorFlow2.11.0为例,这个版本已经比较老了,应该指定numpy版本为1.26.4,新版numpy 2.0.2与旧版tensorflow不兼容:
pip install -U --user numpy==1.26.4
版本对应关系没有参考资料,只能根据发布时间和零星的github issue摸索。
更搞笑的是,还有降依赖的情况,例如2.11.0允许依赖numpy 1.26.4,但是2.12.0必须numpy<1.24,参考这里。

安装TensorFlow

前往TensorFlow,下载源码:

在这里插入图片描述
本例是tensorflow-2.11.0.tar.gz

然后上传tensorflow-2.11.0.tar.gz并解压,cd到解压后的源码根目录,运行:

./configure

接下来会询问若干配置,没有特殊需求的话,尽量都选no然后回车,否则编译时有可能报错。

注意./configure询问Python位置时,默认是软链接/usr/bin/python3
请替换为实际可执行文件,例如/usr/bin/python3.9,否则编译时会报错找不到Python.h,参考这里。
另外,请确保指定了正确的python lib路径(例如/usr/local/lib/python3.9/site-packages)。
必须能在指定目录下找到numpy、wheel和keras_preprocessing的包。

然后开始用bazel编译:

bazel build  --local_ram_resources=2048 //tensorflow/tools/pip_package:build_pip_package

需要等待极漫长的时间,配置差的话可能要数小时,耐心等待。

完成后,构建.whl:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg

项目pip安装:

# 此处根据实际的生成结果修改
pip install /tmp/tensorflow_pkg/tensorflow-2.11.0.whl

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

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

相关文章

《解锁商业潜能:走进MBA的精彩世界》

MBA是工商管理硕士&#xff08;Master of Business Administration&#xff09;的英文缩写。 一、MBA的起源与发展 1. 起源 • MBA教育起源于美国。20世纪初&#xff0c;随着美国经济的快速发展&#xff0c;企业对于具备综合管理能力的高级人才需求日益增加&#xff0c;于是…

2021陇剑杯——流量分析

JWT简介 JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应用环境中以一种紧凑的、URL安全的方式传递声明&#xff08;Claims&#xff09;。JWT通常用于身份验证、信息交换以及验证消息的完整性。JWT通过在不…

visual studio 2022 c++使用教程

介绍 c开发windows一般都是visual studio&#xff0c;linux一般是vscode&#xff0c;但vscode调试c不方便&#xff0c;所以很多情况都是2套代码&#xff0c;在windows上用vs开发方便&#xff0c;在转到linux。 安装 1、官网下载vs2022企业版–选择桌面开发–安装位置–安装–…

Grafana配置告警规则推送企微机器人服务器资源告警

前提 已经部署Grafana&#xff0c;并且dashboard接入数据 大屏编号地址&#xff1a;Node Exporter Full | Grafana Labs 创建企微机器人 备注&#xff1a;群里若有第三方外部人员不能创建 机器人创建完成&#xff0c;记录下来Webhook地址 Grafana配置告警消息模板 {{ define &…

yolov7-搭建及测试

1.环境配置 参考链接&#xff0c;建立环境 2.YOLOv7代码下载 代码及论文地址&#xff1a; GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors 下载zip后解压 注意&am…

HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由

网络层数据封装 首先IP地址封装在网络层&#xff0c;它用于标识一台网络设备&#xff0c;其中IP地址分为两个部分&#xff0c;网络地址和主机地址&#xff0c;通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言&#xff0c;它细分为五类&#xff0c;A,B,C,D,E,…

信号处理相关的东东(学习解惑)

信号处理相关的东东&#xff08;学习解惑&#xff09; 所有内容学习自知乎专栏&#xff0c;https://www.zhihu.com/column/xinhao&#xff0c;写的很好&#xff0c;值得反复学习 时频域分析的一些常用概念 FROM&#xff1a;https://zhuanlan.zhihu.com/p/35742606 1、相加性…

【cocos creator】按照行列数创建格子布局

调用 this.creatLayout(5, 5, this.boxNode, this.rootNode) //限制数量 this.creatLayout(5, 5, this.boxNode, this.rootNode, cc.v3(0, 0), 10, 10, 23) /*** 创建格子布局* param xCount 列数量* param yCount 行数量* param prefab 预制体* param root 根节点* param root…

题解 - 号码分类

题目描述 小明有来自A、B、C三城市的n个朋友&#xff0c;现在要将他们的电话号码按A、B、C的顺序分类输出&#xff0c;但相同地区的号码则仍按原序输出。已知各城市电话号码的第一位是不同的&#xff1a;A城为8&#xff0c;B城为5&#xff0c;C城为2。 输入 共二行。第一行有一…

数据结构复习总结(期末前更新)

搜索二叉树 #include <bits/stdc.h> using namespace std;struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) :val(x),left(nullptr),right(nullptr) {} };// 搜索二叉树 // 每个节点的左子树中的所有节点值都小于该节点的值&#xff0c;而右子…

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java package com.controller;import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map;import javax.s…

monorepo代码管理框架

1. 新建 vue3-component 文件夹 2. 运行pnpm init 3. pnpm i vue typescript 4. 新建.npmrc shamefully-hoisttrue link-workspace-packagestrue 5. ts文件配置 pnpm tsc --init 默认.bin路径下的tsc 6. 新建pnpm-workspace.yaml packages:- packages/** # all packages- p…

WPF 控件

<div id"content_views" class"htmledit_views"><p id"main-toc"><strong>目录</strong></p> WPF基础控件 按钮控件&#xff1a; Button:按钮 RepeatButton:长按按钮 RadioButton:单选按钮 数据显示控件 Te…

java中List集合小练习

题目&#xff1a;将1~100之间所有正整数存放在一个List集合中&#xff0c;并将集合索引位置时10的对象从集合中移除。 代码&#xff1a; import java.util.ArrayList; import java.util.List;public class ListTest {public ListTest(){List<Integer> listnew ArrayLis…

【人工智能】基于Python的自然语言处理:深入实现文本相似度计算

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 文本相似度计算是自然语言处理(NLP)中的核心任务,广泛应用于搜索引擎、推荐系统、问答系统等领域。本文全面解析文本相似度计算的核心技术,使用Python中的spaCy和sentence-transformers库实现多种方法,包括基…

RK3566触摸驱动产品实战 配置设备树 I2C驱动框架(附源码)

引言&#xff1a;相信大家在学完相关驱动框架很少真正的运用在实际的产品案例中&#xff0c;对设备树以及驱动框架还是非常的陌生&#xff0c;其次就是在编写相关驱动还有完成项目任务时的一些思路的引导&#xff0c;这些都是需要补足的&#xff0c;接下来&#xff0c;我们将之…

Qt WORD/PDF(二)使用 QtPdfium库实现 PDF操作、打印等

关于QT Widget 其它文章请点击这里: QT Widget GitHub 源码: QWidgetLearningPro &#xff08;暂未更新&#xff09; 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 预览 一、简介 QtPdfium 是基于Pdfium库的一个Qt绑定。Pdfium是一个…

信息收集(dns信息收集dnsenum和路由收集traceroute)

导入 被动收集方式不容易被目标域发现 DNS信息收集 网络拓扑结构以及网络设置 服务机 路由器 kali机 查看并设置默认网关 工具 或者在系统目录下可找到dns的工具 dnsenum dnsenum -h 帮助指令 收集百度域的指令 使用字典文件破解对查找目标域进行收集 dnsmap 对自己的虚拟机…

git部分命令的使用

# 放弃工作区的修改 git checkout -- .# 或者更安全的方式 git restore .# 如果还需要放弃暂存区的修改 git reset --hard HEAD# 如果有未跟踪的文件也要删除 git clean -fd解释&#xff1a; git checkout – . 或 git restore .: 放弃工作区的所有修改 git reset --hard HEAD…

Java设计模式 —— 【结构型模式】适配器模式(类的适配器、对象适配器、接口适配器)详解

文章目录 基本介绍一、类的适配器二、对象适配器三、接口适配器总结 基本介绍 生活中有很多例子&#xff1a; 不同国家的插座接口不同&#xff0c;需要转换器&#xff1b;家用电源220V&#xff0c;手机只接受5V充电&#xff0c;需要转换器&#xff1b;读卡器&#xff0c;拓展…